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

Python에서 스택 요소가 쌍으로 정렬되어 있는지 확인하십시오.

<시간/>

숫자 스택이 있다고 가정합니다. 스택의 값이 쌍으로 연속적인지 여부를 확인해야 합니다. 이러한 쌍은 증가하거나 감소할 수 있습니다. 스택의 값이 홀수이면 맨 위 요소는 쌍에서 제외됩니다. 그리고 확인 후 원본 스택 내용을 유지해야 합니다.

이 문제를 해결하기 위해 스택에서 push, pop 및 스택이 비어 있는지 여부를 확인하는 세 가지 작업을 사용할 수 있습니다.

따라서 입력이 stk =[5, 6, -4, -5, 12, 11, 6, 7, 22]와 같으면 상단 요소 22를 제거한 후 쌍이 [(5 , 6), (-4, -5), (12, 11), (6, 7)] 모두 연속됩니다.

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

  • temp :=stk에서 요소를 팝하고 temp로 푸시
  • 스택 stk 지우기
  • 플래그 :=참
  • temp의 크기> 1, do
    • item_first, item_second :=temp의 상위 2개 요소 및 팝업
    • if |item_first - item_second| 1이 아니면
      • 플래그 :=거짓
    • item_first 및 item_second를 stk로 푸시
  • temp의 크기가 1과 같으면
    • 최상위를 stk로 푸시
  • 반환 플래그

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

예시 코드

def solve(stk):
   temp = stk[::-1]
   stk.clear()
 
   flag = True
   while len(temp) > 1: 
      item_first = temp[-1] 
      temp.pop() 
      item_second = temp[-1] 
      temp.pop() 
      if abs(item_first - item_second) != 1: 
         flag = False
 
      stk.append(item_first) 
      stk.append(item_second)
 
    if len(temp) == 1: 
      stk.append(temp[-1]) 
 
   return flag
   
stk = [5, 6, -4, -5, 12, 11, 6, 7, 22]
print(solve(stk))

입력

[5, 6, -4, -5, 12, 11, 6, 7, 22]

출력

True