- 최소 힙: 부모 노드의 키값이 자식 노드의 키값보다 항상 작은 힙
- 최대 힙: 부모 노드의 키값이 자식 노드의 키값보다 항상 큰 힙
<출처: https://www.geeksforgeeks.org/heap-data-structure/minheapandmaxheap/>
힙 함수 활용하기
- heapq.heappush(heap, item) : item을 heap에 추가
- heapq.heappop(heap) : heap에서 가장 작은 원소를 pop & 리턴. 비어 있는 경우 IndexError가 호출됨.
- heapq.heapify(x) : 리스트 x를 즉각적으로 heap으로 변환함 (in linear time, O(N) )
최대 힙 만들기
파이썬의 heapq 모듈은 최소 힙으로 구현되어 있기 때문에 최대 힙 구현을 위해서는 트릭이 필요하다.
IDEA: y = -x 변환을 하면 최솟값 정렬이 최댓값 정렬로 바뀐다.
힙에 원소를 추가할 때 (-item, item)의 튜플 형태로 저장되어 있으므로 [1] 인덱싱을 통해 접근하면 된다.
'자료구조와 알고리즘' 카테고리의 다른 글
냅색(knapsack) 알고리즘 (0) | 2022.02.14 |
---|---|
[python] 다익스트라 최단 경로 알고리즘 / 플로이드 워셜 알고리즘 (0) | 2022.01.21 |
자료구조와 알고리즘 (0) | 2022.01.06 |
[python] 너비우선탐색, 깊이우선탐색(bfs, dfs) (0) | 2022.01.05 |