꿈꾸는 개발자의 블로그
[Python] heapq 본문
Heap
파이썬의 heapq 모듈에 대해 알아보기 전에 먼저 힙이 무엇인지 알아야 할 것 같다. 힙 자료구조는 완전 이진 트리를 기초로 하는 자료구조이며, 완전 이진트리란 마지막을 제외한 모든 노드에서 자식들이 꽉 채워진 이진트리를 말한다. 그래서 이를 이용한 힙 정렬은 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법으로, 시간복잡도는 으로 빠른 정렬에 속한다.
- 최소 힙(Min Heap) : 부모 노드의 키값이 자식 노드의 키값보다 항상 작은 힙
- 최대 힙(Max Heap) : 부모 노드의 키값이 자식 노드의 키값보다 항상 큰 힙
heapq
파이썬에서는 heapq 모듈을 통해 힙을 쉽게 표현할 수 있다. 내장 모듈로써 따로 설치없이 바로 사용가능하며, 리스트를 최소 힙의 형태로 정렬해준다.
import heapq
heap = []
l = [10, 1, 5]
heapq.heappush(heap, 10)
heapq.heappush(heap, 1)
heapq.heappush(heap, 5)
print(heap) # [1, 10, 5]
heapq.heappop(heap) # heap에서 가장 작은 원소를 꺼내고 리턴, 비어 있는 경우 IndexError
print(heap) # [5, 10]
heapq.heapify(l) # 리스트를 힙으로 변환
print(l) # [1, 10, 5]
728x90
728x90
'Programming > Python' 카테고리의 다른 글
[Python] 문자열 거꾸로 출력하기 : reverse(), reversed(), 슬라이싱(slicing) (0) | 2022.06.01 |
---|---|
[Python] 딕셔너리(Dictionary) 키(Key), 값(Value) 기준으로 정렬하기 (0) | 2022.05.31 |
[Python] 문자열 찾기 : in, find() (0) | 2022.05.29 |
[Python] 문자열에서 특정 문자 삭제하기 : strip(), replace() (0) | 2022.04.18 |
[Python] 집합(Set)과 딕셔너리(Dictionary) (0) | 2022.04.18 |
Comments