개념
큐는 먼저 삽입한 원소를 먼저 제거하는 선입선출(FIFO) 자료구조입니다. 뒤쪽에 원소를 삽입하고 앞쪽에서 원소를 제거합니다.
뒤에 원소 추가
앞에서부터 이 들어 있는 큐에 을 추가합니다. 앞쪽 끝을 front, 뒤쪽 끝을 back이라고 합니다.
은 back에 있는 뒤에 들어갑니다. 새 원소 이 back이 됩니다.
앞에서 원소 삭제
을 차례로 넣은 큐에서 원소를 하나 꺼냅니다.
가장 먼저 넣은 이 제거되고, 다음에 넣은 이 새로운 front가 됩니다.
언어별 사용법
| 동작 | C++ queue | Java ArrayDeque | Python collections.deque |
|---|---|---|---|
| 뒤에 넣기 | q.push(x) | q.offerLast(x) | q.append(x) |
| 앞 읽기 | q.front() | q.peekFirst() | q[0] |
| 앞에서 꺼내기 | q.pop() | q.pollFirst() | q.popleft() |
| 크기 | q.size() | q.size() | len(q) |
삽입·삭제는 또는 내부 배열 확장에 따른 분할 상환 입니다. 공간복잡도는 입니다.
Python의 list.pop(0)은 이므로 큐에는 deque를 사용합니다.
예제
문제
처음에 비어 있는 큐에 다음 명령을 순서대로 수행하여라.
| 명령 | 동작 |
|---|---|
push x | 맨 뒤에 를 추가한다. |
front | 맨 앞 값을 출력한다. 빈 큐이면 EMPTY를 출력한다. |
pop | 맨 앞 값을 출력하고 제거한다. 빈 큐이면 EMPTY를 출력한다. |
size | 원소 수를 출력한다. |
입력
첫째 줄에 명령 수 가 주어진다. 이다.
다음 개 줄에 위 표의 형식으로 명령이 하나씩 주어진다. 명령과 인자는 공백을 사이에 두고 주어진다. 추가할 값 의 범위는 이다.
출력
출력이 필요한 명령의 결과를 한 줄에 하나씩 출력한다.