๐ ์ฐ์ ์์ ํ๋?
์ฐ์ ์์๋ฅผ ๊ฐ์ง ํญ๋ชฉ๋ค์ ์ ์ฅํ๋ ํ
FIFO ์์๊ฐ ์๋๋ผ ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๊ฒ ๋๋ค.
์ฐ์ ์์ ํ๋ 2๊ฐ์ง๋ก ๊ตฌ๋ถ๋๋ค.
- ์ต์ ์ฐ์ ์์ ํ : ๊ฐ์ฅ ์ฐ์ ์์๊ฐ **๋ฎ์** ์์๋ถํฐ ์ญ์
- ์ต๋ ์ฐ์ ์์ํ : ๊ฐ์ฅ ์ฐ์ ์์๊ฐ **๋์** ์์๋ถํฐ ์ญ์
์ฐ์ ์์ ํ ๊ตฌํ ๋ฐฉ๋ฒ
- ๋ฐฐ์ด์ ์ด์ฉํ ์ฐ์ ์์ ํ
- ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ ์ฐ์ ์์ ํ
- ํ(heap)์ ์ด์ฉํ ์ฐ์ ์์ ํ
์ฌ๊ธฐ์์ ํ์ ์ด์ฉํ ์ฐ์ ์์ ํ๋ฅผ ์ค๋ช
ํ๋ค.
ํ์ ์ด์ฉํ ์ฐ์ ์์ ํ ์๊ฐ ๋ณต์ก๋๋ O(logn)์ด๋ค.
๐ ํ(heap) ์ด๋?
key(๋ถ๋ชจ๋ ธ๋) >= key(์์๋ ธ๋) ๋๋ key(๋ถ๋ชจ๋ ธ๋) <= key(์์๋ ธ๋) ๋ฅผ ๋ง์กฑํ๋ ์์ ์ด์ง ํธ๋ฆฌ์ด๋ค.
ํ ์ข ๋ฅ
- ์ต๋ ํ : key(๋ถ๋ชจ๋ ธ๋) >= key(์์๋ ธ๋) ์์ ์ด์งํธ๋ฆฌ
- ์ต์ ํ : key(๋ถ๋ชจ๋ ธ๋) <= key(์์๋ ธ๋) ์์ ์ด์งํธ๋ฆฌ
โ๏ธ Heapq
python์ **heapq ๋ผ์ด๋ธ๋ฌ๋ฆฌ**๋ก ์ฝ๊ฒ ์ต์ํ๊ณผ ์ต๋ํ์ ๊ตฌํํ ์ ์๋ค.
heapq๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ํ์ผ๋ก ์ค์ ๋์ด ์๋ค.
- ๋ชจ๋ k์ ๋ํด heap[k] <= heap[2*k+1] ๋๋ heap[k] <= heap[2*k+2] ๋ง์กฑ
- ๊ฐ์ฅ ์์ ์์๊ฐ heap[0]์ ์์น
heappush - ๊ฐ ์ถ๊ฐ
heapq.heappush(heap,item)
import heapq
pq = []
heapq.heappush(pq, 3)
heapq.heappush(pq, 10)
heapq.heappush(pq, 1)
heapq.heappush(pq, 0)
heapq.heappush(pq, 4)
print(pq)
# [0, 1, 3, 10, 4]
์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
heappop - ๊ฐ ์ญ์
heapq.heappop(heap)
print(heapq.heappop(pq))
# 0
ํ์ ํํ๋ฅผ ์ ์งํ๋ฉด์ ๊ฐ์ฅ ์์ ํญ๋ชฉ์ pop์ ํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๋๋ค.
'Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ค ์ธ์ฐ๊ธฐ] ์์ ์ ๋ ฌ | ๋ฐฑ์ค 2252๋ฒ | python (5) | 2024.09.01 |
---|---|
[๋ฏธ๋ก ํ์ถ] DFS&BFS | ์ด๊ฒ์ด ์ฝ๋ฉ์ด๋ค | python (0) | 2024.08.31 |
[K๋ฒ์งธ ์ต๋จ๊ฒฝ๋ก ์ฐพ๊ธฐ] ๋ค์ต์คํธ๋ผ | ๋ฐฑ์ค 1854๋ฒ | python (0) | 2024.08.30 |
[์ต๋จ๊ฒฝ๋ก] ๋ค์ต์คํธ๋ผ | ๋ฐฑ์ค 1753๋ฒ | python (0) | 2024.07.07 |
[๊ฒ์๊ฐ๋ฐ] ์์์ ๋ ฌ(Topological Sorting) | ๋ฐฑ์ค 1516๋ฒ | python (0) | 2024.06.26 |