FIFO (First In First Out) 구조를 가지는 자료구조로,
즉, 먼저 들어온 데이터가 먼저 나가는 구조를 의미
<순서대로 처리해야 하는 상황>
1) 프린터 대기열 🖨️ (먼저 요청한 문서부터 인쇄)
2) 은행 대기줄 🏦 (먼저 온 사람이 먼저 처리됨)
3) 운영체제의 작업 스케줄링 💻 (CPU 작업 처리)
4) 네트워크 패킷 처리 📶 (패킷이 들어온 순서대로 처리)
파이썬에서는 리스트나 deque(덱) 로 큐를 구현 가능
(⚠️ 리스트로 pop(0)을 쓰면 비효율적이므로 deque를 추천한다고 한다)
from collections import deque
class Queue:
def __init__(self):
self.queue = deque()
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if not self.isEmpty():
return self.queue.popleft() # 덱의 popleft()를 사용하면 더 빠름!
else:
return "Queue is empty"
def front(self):
if not self.isEmpty():
return self.queue[0]
else:
return "Queue is empty"
def isEmpty(self):
return len(self.queue) == 0
def size(self):
return len(self.queue)
연산 설명
enqueue(x): 큐의 뒤쪽(Rear)에 요소 추가
dequeue(): 큐의 앞쪽(Front)에서 요소 제거
front(): 큐의 앞쪽(Front) 요소 반환 (제거 X)
isEmpty(): 큐가 비었는지 확인
size(): 큐의 요소 개수 반환
10845 - 큐
1966 - 프린터 큐
5430 - AC
1158 - 요세푸스 문제
1021 - 회전하는 큐