heap์ด๋?
: ์ฐ์ ์์ ํ(priority queue)๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋๋ก, ์์ ์ด์งํธ๋ฆฌ๋ฅผ base๋ก ํ ์๋ฃ๊ตฌ์กฐ.
- ์ฐ์ ์์ ํ๋ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ๋จผ์ ์ญ์ ํ๋ ์ ์ด ํน์ง
- ์ต์ ํ: ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํญ์ ์์ ํ
- ์ต๋ ํ: ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํญ์ ํฐ ํ
์๋ฃ๊ตฌ์กฐ | ์ถ์ถ๋๋ ๋ฐ์ดํฐ |
์คํ(stack) | ๊ฐ์ฅ ๋์ค์ ์ฝ์ ๋ ๋ฐ์ดํฐ |
ํ(queue) | ๊ฐ์ฅ ๋จผ์ ์ฝ์ ๋ ๋ฐ์ดํฐ |
์ฐ์ ์์ ํ(priority queue) | ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ |
์ต์ ํ (min heap)
: ๊ฐ์ด ๊ฐ์ฅ ๋ฎ์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ์ญ์
import heapq
heap = []
heapq.heappush(heap, 5)
heapq.heappush(heap, 1)
heapq.heappush(heap, 2)
print(heap) # [1, 5, 2]
print(heapq.heappop(heap)) # 1
์ต๋ ํ (max heap)
: ๊ฐ์ด ํฐ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ์ญ์
- Python์์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ ์์๋ default ๊ฐ์ด ์ต์ ํ์ผ๋ก ๋์ด์์ผ๋ฏ๋ก, ์ต๋ ํ์ผ๋ก ์ฌ์ฉ ์์๋, ๊ฐ์ ์์ ๋ถํธ(-)๋ฅผ ๋ถ์ฌ์ ๋ฃ์๋ค๊ฐ, ๊ฐ์ ์ถ์ถ ์์ ๋ค์ ์์ ๋ถํธ(-)๋ฅผ ๋ถ์ฌ ์๋์ ๊ฐ์ผ๋ก ๋๋๋ฆฐ๋ค.
import heapq
heap = [] # ํ์ฌ: 5, 1, 2๋ฅผ ์ต๋ ํ์ ๋ฃ๊ณ ์ถ์ ์ํ.
heapq.heappush(heap, -5)
heapq.heappush(heap, -1)
heapq.heappush(heap, -2)
print(heap) # [-5, -1, -2]
print(-heapq.heappop(heap)) # 5
'๐ฅ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] DFS & BFS | ๊ทธ๋ํ ํ์ (0) | 2021.08.14 |
---|---|
[Algorithm] ์๋ผํ ์คํ ๋ค์ค์ ์ฒด | ์์ ์ฐพ๊ธฐ (2) | 2021.08.01 |
[Algorithm] ์ด์ง ํ์ | Binary Search (0) | 2021.07.31 |
[Algorithm] ์ ๋ ฌ | ์ ํ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ, ํต ์ ๋ ฌ, ๊ณ์ ์ ๋ ฌ (0) | 2021.07.27 |
[Algorithm] ๋์ ํ๋ก๊ทธ๋๋ฐ | Dynamic Programming (DP) (0) | 2021.07.11 |