์ฐ์ ์์ ํ(Priority Queue)๋ ์์ ์ด์งํธ๋ฆฌ์ธ ํ(Heap)์ผ๋ก ๊ตฌํ๋์ด ์๋ค.
์ฐ์ ์์ ํ(Priority Queue)
ํ(Queue)๋ FIFO(First in - First out)๊ตฌ์กฐ๋ก ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ๊ตฌ์กฐ์ด๋ค.
์ฐ์ ์์ ํ(Priority Queue)๋ ๋ค์ด์จ ์์์๋ ๋ฌด๊ดํ๊ฒ ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ๊ตฌ์กฐ์ด๋ค.
๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ฉด ์ฐ์ ์์์ ๋ฐ๋ผ ์๋์ผ๋ก ์ ๋ ฌํ๋ค.
๋๋ฌธ์ ์ฐ์ ์์ ํ๋ ์ฐ์ ์์์ ๋ฐ๋ผ ์ ๋ ฌํ๋๋ฐ ํจ์จ์ ์ธ ํ(Heap)์ ์ด์ฉํ์ฌ ๊ตฌํํ๋ค.
- ํ์ด ์๋ ๋ฐฐ์ด๋ก ๊ตฌํํ๋ค๊ณ ๊ฐ์ ํ์.
๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ฉด ์ฐ์ ์์์ ๋ฐ๋ผ ์ ๋ ฌํ๊ธฐ ์ํด ๋ชจ๋ ์ธ๋ฑ์ค๋ฅผ ํ์ํด์ผ ํ๋ค.
์ฌ๊ธฐ์ ์๊ฐ๋ณต์ก๋๋ ๋ฐ์ดํฐ๊ฐ n๊ฐ ์ผ ๋ O(n)์ด ๋๋ค.
์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
- ๊ทธ๋ผ ํ์ ์ฌ์ฉํ ์ด์ ๋ ๋ญ๊น?
ํ์ ๊ฒฝ์ฐ ์์ ์ด์งํธ๋ฆฌ๋ก ๋ถ๋ชจ์ ์์๊ฐ์ ๋น๊ต๋ง ๊ณ์ ์ด๋ฃจ์ด์ง๋ค.
์ฆ, ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ๋ง ๋น๊ตํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ด์ง ํธ๋ฆฌ์ ๋์ด๊ฐ ํ๋ ์ฆ๊ฐํ ๋๋ง๋ค ์ ์ฅ ๊ฐ๋ฅํ ์๋ฃ์ ๊ฐฏ์๋ 2๋ฐฐ ์ฆ๊ฐํ๋ฉฐ, ๋น๊ต ์ฐ์ฐํ์๋ 1ํ ์ฆ๊ฐํ๋ค.
์ฌ๊ธฐ์ ์๊ฐ๋ณต์ก๋๋ O(log2n)์ด ๋๋ค.
๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๊ฒฝ์ฐ, index๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ญ์ ๋ ๋งค์ฐ ๋น ๋ฅด๋ค. ํ์ง๋ง ์ฝ์ ์ ๊ฒฝ์ฐ ๋นํจ์จ์ ์ด๋ค.
์ญ์ ์ธก๋ฉด์์๋ ๋ฐฐ์ด/์ฐ๊ฒฐ๋ฆฌ์คํธ๊ฐ ์ฐ์๋ฅผ ์ ํ ์ง๋ผ๋, ์ฝ์ ์ธก๋ฉด์์๋ ํ์ ์๊ฐ๋ณต์ก๋๊ฐ ์๋ฑํ๊ธฐ ๋๋ฌธ์
ํธ์ฐจ๊ฐ ์ฌํ ๋ฐฐ์ด/์ฐ๊ฒฐ๋ฆฌ์คํธ ๋ณด๋ค๋ ํ์ ์ฌ์ฉํ์ฌ ๊ตฌํํ๋ค.
ํ(heap)
- ํ์ ์์ ์ด์งํธ๋ฆฌ(Complete Binary Tree)๋ค.
- ๋ชจ๋ ๋ ธ๋๋ ์์๋ ธ๋๋ค ๋ณด๋ค ์ฐ์ ์์๊ฐ ํฌ๊ฑฐ๋ ๊ฐ๋ค. (์ค๋ณต๊ฐ์ด ํ์ฉ๋๋ฏ๋ก ์ฐ์ ์์๊ฐ ๊ฐ์ ์ ์๋ค.)
- ๋ฃจํธ ๋ ธ๋์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋๋ค.
์ต๋ ํ(Max Heap) : ๋ถ๋ชจ๋ ธ๋ ํค ๊ฐ์ด ์์๋ ธ๋๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์์ ์ด์งํธ๋ฆฌ
์ต์ ํ(Min Heap) : ๋ถ๋ชจ๋ ธ๋ ํค ๊ฐ์ด ์์๋ ธ๋๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ด์งํธ๋ฆฌ
'Algorithm > ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ๋นํธ๋ง์คํน - ์์ด, ์กฐํฉ, ๋ถ๋ถ์งํฉ (0) | 2023.09.16 |
---|---|
[์๋ฃ๊ตฌ์กฐ] HashSet (0) | 2023.01.09 |
[์๋ฃ๊ตฌ์กฐ] HashMap (0) | 2023.01.04 |
[์๊ณ ๋ฆฌ์ฆ] BFS์ DFS ์๊ฐ๋ณต์ก๋ (0) | 2022.11.20 |
[์๊ณ ๋ฆฌ์ฆ] ์์ด, ์กฐํฉ, ๋ถ๋ถ์งํฉ Java (0) | 2022.08.22 |