๐ฏ Heap
Heap(ํ)์ ์ต๋ ๊ฐ ๋๋ ์ต์ ๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฐ์ ์์ ํ(Priority Queue)์ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
๋ถ๋ชจ ๋ ธ๋์ ์์ ๋ ธ๋ ๊ฐ์ ํฌ๊ธฐ ๊ด๊ณ๋ฅผ ์ด์ฉํ์ฌ ํจ์จ์ ์ธ ์ฝ์ , ์ญ์ , ํ์ ์ฐ์ฐ์ ์ํํ ์ ์๋ ํธ๋ฆฌ ๊ธฐ๋ฐ์ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
Heap์ ๊ตฌ์กฐ
Heap์ ์์ ์ด์ง ํธ๋ฆฌ(Complete Binary Tree)์ ํํ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. ์์ ์ด์ง ํธ๋ฆฌ๋ ๋ชจ๋ ๋ ๋ฒจ์์ ๋ ธ๋๋ค์ด ๊ฝ ์ฐจ์๊ณ , ๋ง์ง๋ง ๋ ๋ฒจ์์๋ ์ผ์ชฝ๋ถํฐ ์์๋๋ก ์ฑ์์ ธ ์์ต๋๋ค.
Heap์ ํฌ๊ฒ Max Heap๊ณผ Min Heap์ผ๋ก ๋๋ ์ ์์ต๋๋ค. Max Heap์ ๋ถ๋ชจ ๋ ธ๋๊ฐ ์์ ๋ ธ๋๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ง๋ Heap์ด๊ณ , Min Heap์ ๋ถ๋ชจ ๋ ธ๋๊ฐ ์์ ๋ ธ๋๋ณด๋ค ์์ ๊ฐ์ ๊ฐ์ง๋ Heap์ ๋๋ค.
Heap์ ํน์ง
- Heap์ ํญ์ ์์ ์ด์ง ํธ๋ฆฌ์ ํํ๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค.
- Max Heap์์๋ ๋ฃจํธ ๋ ธ๋๊ฐ ์ต๋๊ฐ์ ๊ฐ์ง๋ฉฐ, Min Heap์์๋ ๋ฃจํธ ๋ ธ๋๊ฐ ์ต์๊ฐ์ ๊ฐ์ง๋๋ค.
- ๋ถ๋ชจ ๋ ธ๋์ ๊ฐ์ ํญ์ ์์ ๋ ธ๋์ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋(Max Heap) ํน์ ์์์ผ(Min Heap) ํฉ๋๋ค.
- Heap์์๋ ์๋ก์ด ๋ ธ๋๋ฅผ ์ฝ์ ํ ๋, ํญ์ ์์ ์ด์ง ํธ๋ฆฌ์ ๋ง์ง๋ง ๋ ธ๋์ ์ฝ์ ํฉ๋๋ค.
- Heap์์๋ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ญ์ ํ ๋, ํญ์ ๋ง์ง๋ง ๋ ธ๋๋ฅผ ๋ฃจํธ ๋ ธ๋๋ก ์ฎ๊ธด ํ, Heap์ ํน์ฑ์ ์ ์งํ๊ธฐ ์ํด ๋ค์ ์ ๋ ฌํฉ๋๋ค.
Heap์ ์ฐ์ฐ
- ์ฝ์ (Insert): Heap์ ์๋ก์ด ๋ ธ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- ์ญ์ (Delete): Heap์์ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
- ํ์(Search): Heap์์ ์ต์ ๊ฐ ๋๋ ์ต๋ ๊ฐ์ ์ ๊ทผํฉ๋๋ค.
- Heapify: ์ฃผ์ด์ง ๋ฐฐ์ด์ Heap์ผ๋ก ๋ณํํฉ๋๋ค.
Heap์ ์ด์ง ํ์ ํธ๋ฆฌ์๋ ๋ค๋ฅด๊ฒ ๋์ด๊ฐ log(n)์ผ๋ก ์ ์ง๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ Heap์์์ ์ฝ์ , ์ญ์ , ํ์ ์ฐ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ O(log n)์ ๋๋ค.
Heap ์ฅ๋จ์
โญ๏ธ Heap ์ฅ์
- ํ์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ O(log n)์ ์๊ฐ ๋ณต์ก๋๋ก ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ ๋ฐฐ์ด์ด๋ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ ์ผ๋ฐ์ ์ธ ์๋ฃ๊ตฌ์กฐ์ O(n) ์๊ฐ ๋ณต์ก๋์ ๋น๊ตํด์ ๋น ๋ฅธ ์๋๋ฅผ ๋ณด์ ๋๋ค.
- ํ์ ์ต๋๊ฐ ๋๋ ์ต์๊ฐ์ O(1) ์๊ฐ ๋ณต์ก๋๋ก ์ฐพ์ ์ ์์ต๋๋ค. ์ด๋ ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ์ต๋๊ฐ ๋๋ ์ต์๊ฐ์ ์ฐพ๋ ๊ฒ๋ณด๋ค ๋ ๋น ๋ฅด๋ฉฐ, ์ผ๋ถ ์๊ณ ๋ฆฌ์ฆ์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
- ํ์ ์์ ์ด์ง ํธ๋ฆฌ์ด๋ฏ๋ก ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๊ตฌํํ๊ธฐ ์ฝ์ต๋๋ค.
๐๏ธ Heap ๋จ์
- ํ์ ํน์ ๊ฐ์ ์ฐพ๋ ํ์ ์ฐ์ฐ์๋ ์ ํฉํ์ง ์์ต๋๋ค. ์ด๋ ํธ๋ฆฌ๋ฅผ ํ์ํ๋ ๊ณผ์ ์์ ํน์ ๋ ธ๋๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ชจ๋ ๋ ธ๋๋ฅผ ํ์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ํ์ ์ผ๋ฐ์ ์ผ๋ก ์์ ๊ณ์๊ฐ ํฌ๊ธฐ ๋๋ฌธ์, ์์ ๊ท๋ชจ์ ์๋ฃ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ๋ ํจ์จ์ ์ด์ง ์์ ์ ์์ต๋๋ค.
- ํ์ ๊ฐ ๋ ธ๋๊ฐ ๋ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ฏ๋ก, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ง์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
'์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] ์ด์งํ์ํธ๋ฆฌ(Binary Search Tree) (0) | 2023.03.27 |
---|---|
[์๋ฃ๊ตฌ์กฐ] Hash (0) | 2023.03.27 |
[์๋ฃ๊ตฌ์กฐ] LinkedList (0) | 2023.03.26 |
[์๋ฃ๊ตฌ์กฐ] Trie (0) | 2023.03.26 |
[์๋ฃ๊ตฌ์กฐ] Tree (0) | 2023.03.26 |