·연습 문제

큐 명령 처리

문제 설명PROBLEM

큐 명령 처리

왜 이 문제를 푸나요?

FIFO 동작과 빈 큐 경계를 직접 다루면 BFS나 작업 스케줄링에서 큐를 자연스럽게 선택할 수 있습니다. 리스트 pop(0)의 성능 문제도 함께 익힙니다.

익혀야 할 개념

  • FIFO
  • collections.deque
  • append와 popleft
  • 빈 큐 처리

과제

명령 목록을 순서대로 처리하세요. ['push', 값]은 뒤에 삽입, ['pop']은 앞 값을 제거해 결과에 추가, ['peek']은 앞 값을 제거하지 않고 결과에 추가합니다. 빈 큐에서 pop 또는 peek하면 None을 추가합니다.

함수

process_queue(operations)

목표 복잡도

명령 m개 기준 시간 O(m), 공간 O(m)

테스트 케이스

실행하면 아래 순서대로 채점합니다. print() 출력도 이 순서대로 쌓입니다.

#이름operations기대값
1FIFO 처리[["push", 3], ["push", 7], ["peek"], ["pop"], ["pop"]][3, 3, 7]
2빈 큐[["pop"], ["peek"]][None, None]
3다시 삽입[["push", 1], ["pop"], ["push", 2], ["peek"]][1, 2]
4연속 조회[["push", 4], ["peek"], ["peek"], ["pop"], ["peek"]][4, 4, 4, None]
5삽입과 제거 혼합[["push", 5], ["push", 6], ["pop"], ["push", 7], ["pop"], ["pop"]][5, 6, 7]

Python 표준 라이브러리는 사용할 수 있습니다. 함수 이름과 매개변수는 제시된 형태를 유지하세요.

개념 노트와 실수 포인트

  • 먼저 넣은 값을 먼저 꺼내는 FIFO 구조입니다.
  • 리스트의 pop(0)은 O(n)이므로 collections.dequepopleft()를 사용하세요.