Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 스택 또는 큐의 이동이 가능한지 확인

<시간/>

하나의 이진 목록이 있다고 가정합니다. 여기서 1은 푸시 작업을 나타내고 0은 스택 또는 큐에 대한 팝 작업을 나타냅니다. 가능한 작업 집합이 유효한지 여부를 확인해야 합니다.

따라서 입력이 nums =[1,0,1,1,0,1]과 같으면 시퀀스가 ​​[Push,Pop,Push,Push,Pop,Push]이므로 출력은 True가 됩니다. 이러한 작업이 유효하도록 빈 목록에서 요소를 팝핑합니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 푸시_카운트:=0
  • 0부터 숫자 - 1까지의 범위에 있는 i에 대해
    • nums[i]가 1이면
      • push_count :=push_count + 1
    • 그렇지 않으면
      • push_count :=push_count - 1
    • push_count <0이면
      • 거짓을 반환
  • 참 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(nums):
   push_count = 0
   for i in range (len(nums)):
      if nums[i]:
         push_count += 1
      else:
         push_count -= 1
      if push_count < 0:
         return False
   return True
nums = [1,0,1,1,0,1]
print(solve(nums))

입력

[1,0,1,1,0,1]

출력

True