๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[Coding Interview University] ํ / ์ฐ์ ์์ ํ / ์ด์ง ํ : ์ด๋ก ๋ฐ ๊ตฌํ ๋ณธ๋ฌธ
[Coding Interview University] ํ / ์ฐ์ ์์ ํ / ์ด์ง ํ : ์ด๋ก ๋ฐ ๊ตฌํ
์ง์ง์ํ์นด 2023. 7. 13. 23:40<๋ณธ ๋ธ๋ก๊ทธ๋ ์ฝ๋ฉ์ธํฐ๋ทฐ๋ํ ๋์ Git๊ณผ ์์ ์ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-)>
๐ ํ(heap) ์๋ฃ๊ตฌ์กฐ
: ์ต๋๊ฐ ๋ฐ ์ต์๊ฐ์ ์ฐพ์๋ด๋ ์ฐ์ฐ์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํด ๊ณ ์๋ ์์ ์ด์งํธ๋ฆฌ (complete binary tree) ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ ์๋ฃ๊ตฌ์กฐ
: A๊ฐ B์ ๋ถ๋ชจ ๋ ธ๋์ด๋ฉด, A์ ํค ๊ฐ๊ณผ B์ ํค ๊ฐ ์ฌ์ด์๋ ๋์ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝ๋๋ค
: ์์ ์ด์ง ํธ๋ฆฌ
: ๋ชจ๋ ๋ ธ๋์ ์ ์ฅ๋ ๊ฐ์ ์์ ๋ ธ๋์ ์ ์ฅ๋ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ์์์ผ ํ๋ ์๋ฃ๊ตฌ์กฐ
- ์ต๋ ํ : ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํญ์ ํฐ ํ ๊ฐ์ง
left : i * 2 + 1
right : i * 2 + 2
parent : (i - 1) / 2
- ์ต์ ํ : ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํญ์ ์์ ํ ๊ฐ์ง
๐ ํ(heap) ์ฃผ์ ๋ฉ์๋
peek() : ์ต๋/์ต์๊ฐ ๋ฆฌํด
size() : ํ ์ฌ์ด์ฆ ๋ฆฌํด
isEmpty() : ํ ์ฌ์ด์ฆ 0 ์ฒดํฌ
๐ ์ฐ์ ์์ ํ (Priority Queue) ์๋ฃ๊ตฌ์กฐ
: ํ๋ฒํ ํ(queue)๋ ์คํ(stack)๊ณผ ๋น์ทํ ์ถ์ฝ ์๋ฃํ
: ๊ฐ ์์๋ค์ ์ฐ์ ์์๋ฅผ ๊ฐ๊ณ ์๋ค
: ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ์์๋ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ์์๋ณด๋ค ๋จผ์ ์ฒ๋ฆฌ๋๋ค. ๋ง์ฝ ๋ ์์๊ฐ ๊ฐ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค๋ฉด ๊ทธ๋ค์ ํ์์ ๊ทธ๋ค์ ์์์ ์ํด ์ฒ๋ฆฌ๋๋ค
- ์คํ(stack) - ์์๋ค์ ํ์ ์ ์ถ ์์ผ๋ก ์ฒ๋ฆฌ๋๋ค
- ํ(queue) - ์์๋ค์ ์ ์ ์ ์ถ ์์ผ๋ก ์ฒ๋ฆฌ๋๋ค
๐ ์ด์ง ํ (Binary Heap) ์๋ฃ๊ตฌ์กฐ
: ์์ ์ด์ง ํธ๋ฆฌ (๊ฐ ๋ ๋ฒจ์ ๋ ธ๋๋ค์ด ๊ฝ ์ฐจ์๋ ์ด์ง ํธ๋ฆฌ)
: ๋ง์ง๋ง ๋ ๋ฒจ ์ ์ธ (์ผ์ชฝ๋ถํฐ ์ฑ์์ง๋ฉฐ, ์ค๋ฅธ์ชฝ์๋ ๋น์์ง ์ ์์)
: ๋ฐ ์ ๋ ฌ์ํ๋ฅผ ์ ์ง
: ๋ถ๋ชจ,์์ ๊ฐ์๋ ๋์ ๊ด๊ณ๊ฐ ์์ผ๋, ํ์ ๋ค ๊ฐ์๋ ๋์ ๊ด๊ณ๊ฐ ์ ํด์ง์ง ์์
→ ๋ถ๋ถ์์ ํธ๋ฆฌ (PartialOrdered Tree)
: ์ค๋ณต๋ ๊ฐ ํ์ฉ ๊ฐ๋ฅ
๐ ์ด์ง ํ (Binary Heap) ์กฐ๊ฑด
: ๋ฃจํธ ๊ฐ์ด ํญ์, ์ ์ผ ํฌ๊ฑฐ(์ต๋ ํ)๋ ์ ์ผ ์๊ฑฐ(์ต์ ํ)๋ ํด์ผ ํจ
: ๋ถ๋ชจ์ ๊ฐ์ด ์์ ๋ณด๋ค ํญ์ ํฌ๋ค(์ต๋ ํ) ๋๋ ํญ์ ์๋ค(์ต์ ํ) ๋ผ๋ ์กฐ๊ฑด์ ๋ง์กฑ ํจ
: ํ์ ๊ฐ์๋ ๊ฐ์ ํฌ๊ณ ์์์ด ์๊ด ์์
: ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ๊ณ ๋, ๊ฐ ๋ ๋ฒจ์๋ ธ๋๋ค์ด ๋ชจ๋ ์ฐจ ์์
: ๋งจ ์๋ ๋ ๋ฒจ์์๋, ์ผ์ชฝ๋ถํฐ ๊ฝ ์ฑ์์ ธ ์์
๐ ์ด์ง ํ (Binary Heap) ์ข ๋ฅ
- ์ต๋ ํ (Max-Heap) :๋ฃจํธ ๋ ธ๋๊ฐ ๊ฐ์ฅ ๋์ ๊ฐ์ ๊ฐ๊ณ , ๊ฐ ๋ ธ๋์ ๊ฐ์ด ์์ ๊ฐ ๋ณด๋ค ํผ
- ์ต์ ํ (Min-Heap) :๋ฃจํธ ๋ ธ๋๊ฐ ๊ฐ์ฅ ๋ฎ์ ๊ฐ์ ๊ฐ๊ณ , ๊ฐ ๋ ธ๋์ ๊ฐ์ด ์์ ๊ฐ ๋ณด๋ค ์์
๐ ์ด์ง ํ (Binary Heap) ์ ๋ ธ๋ ์์น (์ธ๋ฑ์ค)
: ์ผ์ชฝ ์์๋ ธ๋ ์์น๋ฅผ i๋ผ๊ณ ํ๋ฉด, ์ค๋ฅธ์ชฝ ์์๋ ธ๋ ์์น๋ i+1, ๋ถ๋ชจ๋ ธ๋ ์์น๋ i/2
๐ ์ด์ง ํ (Binary Heap) ์ ์์
: ํ์ ๋ ฌ,๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ (์ต๋จ ๊ฒฝ๋ก),ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ (์ต์ ์ ์ฅ ํธ๋ฆฌ) ๋ฑ
: ์ฌ๋ฌ ์๋ฃ ์ค์, ๊ฐ์ฅ ํฐ ๊ฐ์ด๋ ๊ฐ์ฅ ์์ ๊ฐ์, ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ
๐ ์ด์ง ํ (Binary Heap) ๊ตฌํ
- insert(e) : ์์ ์ฝ์
- remove() : ๋ฃจํธ ๋๋ ํน์ ์์ ์ญ์
- peek() : ๋ฃจํธ๋ก๋ถํฐ ๊ฐ ์ฝ์ด์ค๊ธฐ
- poll() : ๋ฃจํธ๋ก๋ถํฐ ๊ฐ ์ฝ์ด์ค๋ฉฐ ์ญ์
- isEmpty() : ํ์ด ๋น์ด์๋์ง ํ์ธ
- size() : ํ์ ์ ์ฅ๋ ์๋ฃ์ ๊ฐ์ ํ์ธ
'๐ฉโ๐ป ์ปดํจํฐ ๊ตฌ์กฐ > Computer Science' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Coding Interview University] ์ด์ง ํ์ ํธ๋ฆฌ : ์ด๋ก ๋ฐ ๊ตฌํ (0) | 2023.07.12 |
---|---|
[Coding Interview University] ํธ๋ฆฌ : ์ด๋ก ๋ฐ ๊ตฌํ (0) | 2023.07.11 |
[Coding Interview University] ๋นํธ ์ฐ์ฐ : ์ด๋ก ๋ฐ ๊ตฌํ (0) | 2023.07.11 |
[Coding Interview University] ์ด์งํ์ : ์ด๋ก ๋ฐ ๊ตฌํ (0) | 2023.07.07 |
[Coding Interview University] ํด์ํ ์ด๋ธ : ์ด๋ก ๋ฐ ๊ตฌํ (0) | 2023.07.05 |