기본 패턴
python
from collections import deque
import heapq
queue = deque([1, 2, 3])
queue.append(4)
queue.popleft()
heap = [5, 1, 9]
heapq.heapify(heap)
smallest = heapq.heappop(heap)설명
deque는 양쪽 끝에서 빠르게 넣고 빼는 자료구조라서 큐와 스택 구현에 자주 씁니다.- 리스트도 비슷하게 보이지만, 맨 앞 원소를 자주 빼는 작업에는
deque가 더 적합합니다. heapq는 최소 힙 기반의 우선순위 큐를 다룰 때 유용합니다.- 알고리즘 문제나 작업 스케줄링처럼 "가장 작은 값부터 빠르게 꺼내기"가 필요할 때 많이 씁니다.
짧은 예제
python
from collections import deque
tasks = deque(["a", "b", "c"])
current = tasks.popleft()
import heapq
scores = [30, 10, 20]
heapq.heapify(scores)
print(heapq.heappop(scores)) # 10빠른 정리
| 도구 | 잘 맞는 상황 |
|---|---|
deque | 큐, 양방향 삽입/삭제 |
list | 일반 시퀀스 처리 |
heapq | 우선순위 큐, 최소값 반복 추출 |
heapify | 리스트를 힙 구조로 변환 |
공식 참고: collections — deque, heapq — Heap queue algorithm
주의할 점
heapq는 자동으로 전체 정렬된 리스트를 유지하는 도구가 아닙니다. 힙은 "가장 작은 값이
빠르게 앞에 오도록" 보장할 뿐, 나머지 순서는 일반 정렬 결과와 다를 수 있습니다.