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

Python에서 대기열 요소가 쌍으로 연속적인지 확인하십시오.

<시간/>

숫자로 가득 찬 대기열이 있다고 가정합니다. 큐의 연속된 요소가 쌍으로 연속적인지 여부를 확인해야 합니다.

따라서 입력이 que =[3,4,6,7,8,9]와 같으면 출력은 True가 됩니다.

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

  • q :=대기열을 정의하고 주어진 목록의 모든 요소를 ​​q에 삽입
  • temp :=새 목록
  • q가 비어 있지 않은 동안 do
    • 대기열의 앞 요소를 임시에 삽입하고 대기열에서 앞 요소 삭제
  • temp2 :=새 목록
  • temp가 비어 있지 않은 동안 do
    • temp의 마지막 요소를 temp2에 삽입
    • temp에서 마지막 요소 삭제
  • 결과:=참
  • temp2의 크기가 1인 동안 do
    • x :=temp2의 마지막 요소
    • temp2에서 마지막 요소 삭제
    • y :=temp2의 마지막 요소
    • temp2에서 마지막 요소 삭제
    • 만약 |x - y| 1이 아니면
      • 결과 :=거짓
    • q에 x 및 y 삽입
  • temp2의 크기가 1이면
    • temp2의 마지막 요소를 q에 삽입
  • 반환 결과

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

import queue
def solve(que):
   q = queue.Queue()
   for i in que:
      q.put(i)
   temp = []
   while q.qsize() != 0:
      temp.append(q.queue[0])
      q.get()
   temp2 = []
   while len(temp) != 0:
      temp2.append(temp[len(temp) - 1])
      temp.pop()
   result = bool(True)
   while len(temp2) > 1:
      x = temp2[len(temp2) - 1]
      temp2.pop()
      y = temp2[len(temp2) - 1]
      temp2.pop()
      if abs(x - y) != 1:
         result = False
      q.put(x)
      q.put(y)
   if len(temp2) == 1:
      q.put(temp2[len(temp2) - 1])
   return result
que = [3,4,6,7,8,9]
print(solve(que))

입력

[3,4,6,7,8,9]

출력

True