heapq ๋ชจ๋์ ์ฐ์ ์์ ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ์ ์ ๊ณตํ๋ค. ํ์ ๋ชจ๋ ๋ถ๋ชจ ๋ ธ๋๊ฐ ์์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฐ์ ๊ฐ๋ ์ด์งํธ๋ฆฌ์ด๋ค.
item๊ฐ์ heap์ ์ถ๊ฐํ๋ค.
import heapq
heap = []
heapq.heappush(heap, 50)
heapq.heappush(heap, 10)
heapq.heappush(heap, 20)
>>> print(heap)
[10, 50, 20]
heap์์ ๊ฐ์ฅ ์์ ํญ๋ณต์ ์ ๊ฑฐํ ํ ๋ฐํํ๋ค. ์ด ๋, heap์ด ๋น์ด์์ผ๋ฉด IndexError๊ฐ ๋ฐ์ํ๋ค.
import heapq
heap = [10, 50, 20]
heapq.heappop(heap)
>>> print(heap)
[20, 50]
heap์ tiem์ ์ถ๊ฐํ๊ณ , ehap์์ ๊ฐ์ฅ ์์ ํญ๋ณต์ ์ ๊ฑฐํ๊ณ ๋ฐํํ๋ค. heappushํ ๋ค์ heappop์ ๊ฐ๊ฐ ์ํํ๋ ๊ฒ๋ณด๋ค ํจ์จ์ ์ด๋ค.
import heapq
heap = [10, 50, 20]
heapq.heappushpop(heap, 90)
>>> print(heap)
[20, 50, 90]
list x๋ฅผ heap์ผ๋ก ๋ณํํฉ๋๋ค.
import heapq
heap = [4, 1, 7, 3, 8, 5]
heapq.heapify(heap)
>>> print(heap)
[1, 3, 5, 4, 8, 7]
heap์ ์ํด ์ ์๋ ๋ฐ์ดํฐ ์งํฉ์์ n๊ฐ์ ๊ฐ์ฅ ํฐ ์์๋ก ๊ตฌ์ฑ๋ list๋ฅผ ๋ฐํํ๋ค.
import heapq
heap = [1, 3, 5, 4, 8, 7]
>>> print(heapq.nsmallest(3, heap))
[1, 3, 4]
heap์ ์ํด ์ ์๋ ๋ฐ์ดํฐ ์งํฉ์์ n๊ฐ์ ๊ฐ์ฅ ์์ ์์๋ก ๊ตฌ์ฑ๋ list๋ฅผ ๋ฐํํ๋ค.
import heapq
heap = [1, 3, 5, 4, 8, 7]
>>> print(heapq.nlargest(3, heap))
[8, 7, 5]