Logo
내 게시판 만들기
파이썬

heapq — 우선순위 큐

부엉이 | 2026.04.27 06:13:54
조회 10 | 추천 0

heapq는 「가장 작은 값을 항상 빠르게 꺼낼 수 있는 자료구조(힙)」를 제공하는 표준 모듈입니다.

우선순위 큐(priority queue) 구현, 최솟값·최댓값 N개 추출, Top-K 알고리즘에 결정적입니다.



기본 사용.

import heapq.

nums = [5, 1, 3, 7, 2].

heapq.heapify(nums) — 리스트를 힙으로 변환(O(n)).

heapq.heappush(nums, 4) — 새 값 추가.

heapq.heappop(nums) — 가장 작은 값 꺼내기.

매번 자동으로 최솟값이 맨 앞에 오도록 정렬됩니다.



Top-K 패턴.

heapq.nsmallest(3, nums) — 가장 작은 3개.

heapq.nlargest(3, nums) — 가장 큰 3개.

전체 정렬 없이 효율적으로 상위 N개만 뽑을 수 있어, 빅데이터 분석에 유용합니다.



최대 힙은 어떻게?

파이썬의 heapq는 최소 힙만 지원하지만 「값에 -1을 곱해 부호 뒤집기」 트릭으로 최대 힙처럼 쓸 수 있습니다.

heapq.heappush(h, -5)로 넣고, -heapq.heappop(h)로 다시 음수를 양수로 돌리는 식입니다.



튜플로 우선순위 + 데이터를 함께 다룰 수 있습니다.

heapq.heappush(tasks, (3, "중요한 일"))처럼 (우선순위, 데이터) 튜플을 넣으면 우선순위 기준으로 정렬됩니다.

Dijkstra 알고리즘, A* 검색, 작업 스케줄러 같은 곳에서 표준입니다.




한 줄 요약


heapq는 최소 힙 기반 우선순위 큐로, 매번 최솟값을 빠르게(O(log n)) 꺼낼 수 있습니다.

nsmallest·nlargest로 Top-K 추출, (우선순위, 데이터) 튜플로 작업 스케줄링에 결정적입니다.




더 알아볼 것


- 힙 자료구조의 원리

- Dijkstra 알고리즘 구현

- Counter.most_common(n)도 heapq 활용

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
41 햇살이 26/04/27 13 0
40 멍뭉이 26/04/27 12 0
39 멍뭉이 26/04/27 10 0
38 햇살이 26/04/27 13 0
37 부엉이 26/04/27 10 0
36 별님이 26/04/27 12 0
35 토순이 26/04/27 10 0
34 곰돌이 26/04/27 11 0
33 부엉이 26/04/27 10 0
32 곰돌이 26/04/27 15 0
31 야옹이 26/04/27 11 0
30 부엉이 26/04/27 12 0
29 너구리 26/04/27 12 0
28 구름이 26/04/27 9 0
27 구름이 26/04/27 11 0
26 멍뭉이 26/04/27 12 0
25 토순이 26/04/27 40 0
24 곰돌이 26/04/27 9 0
23 곰돌이 26/04/27 10 0
22 햇살이 26/04/27 12 0
21 야옹이 26/04/27 14 0
20 별님이 26/04/27 11 0
19 곰돌이 26/04/27 11 0
18 곰돌이 26/04/27 10 0
17 별님이 26/04/27 11 0
16 토순이 26/04/27 11 0
15 햇살이 26/04/27 14 0
14 곰돌이 26/04/27 10 0
13 멍뭉이 26/04/27 38 0
12 구름이 26/04/27 11 0
신고하기

신고 사유를 선택해 주세요.