숫자로 가득 찬 대기열이 있다고 가정합니다. 큐의 연속된 요소가 쌍으로 연속적인지 여부를 확인해야 합니다.
따라서 입력이 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