Python고급 주제

deque와 heapq 기본

큐와 우선순위 구조를 다룰 때 자주 쓰는 Python `deque`와 `heapq`의 기본 역할을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

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는 자동으로 전체 정렬된 리스트를 유지하는 도구가 아닙니다. 힙은 "가장 작은 값이 빠르게 앞에 오도록" 보장할 뿐, 나머지 순서는 일반 정렬 결과와 다를 수 있습니다.