- โ๏ธ ํ(Queue)
- ๋จผ์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ FIFO(First In First Out) ํ์์ ์๋ฃ๊ตฌ์กฐ
โ๏ธ ์ฐ์ ์์ ํ(Priority Queue)- ๋จผ์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ, ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ํํ์ ์๋ฃ๊ตฌ์กฐ,
์ฐ์ ์์ ํ๋ ์ผ๋ฐ์ ์ผ๋ก ํ(Heap)์ ์ด์ฉํ์ฌ ๊ตฌํ,
๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด์๋ ๊ตฌํ๊ฐ๋ฅ
ํ(Heap)
- ํ(Heap)์ ์ฐ์ ์์ ํ๋ฅผ ์ํด ๊ณ ์๋
์์ ์ด์งํธ๋ฆฌ
ํํ์ ์๋ฃ๊ตฌ์กฐ - ์ฌ๋ฌ ๊ฐ์ ๊ฐ ์ค ์ต๋๊ฐ ๋๋ ์ต์๊ฐ์ ์ฐพ์๋ด๋ ์ฐ์ฐ์ด ๋น ๋ฆ
ํ์ ํน์ง
- ์์ ์ด์งํธ๋ฆฌ ํํ๋ก ์ด๋ฃจ์ด์ง
- ๋ถ๋ชจ๋ ธ๋์ ์๋ธํธ๋ฆฌ๊ฐ ๋์ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝ๋จ (๋ฐ์ ๋ ฌ ์ํ)
- ์ด์งํ์ํธ๋ฆฌ(BST)์ ๋ฌ๋ฆฌ ์ค๋ณต๋ ๊ฐ์ด ํ์ฉ
ํ์ ์ข ๋ฅ
- ์ต๋ ํ (Max Heap)
- ๋ถ๋ชจ ๋
ธ๋์ ํค ๊ฐ์ด ์์ ๋
ธ๋๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์์ ์ด์งํธ๋ฆฌ
key(๋ถ๋ชจ๋ ธ๋) โฅ key(์์๋ ธ๋)
- ์ต์ ํ (Min Heap)
- ๋ถ๋ชจ ๋
ธ๋์ ํค ๊ฐ์ด ์์ ๋
ธ๋๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ด์งํธ๋ฆฌ
key(๋ถ๋ชจ๋ ธ๋) โฅ key(์์๋ ธ๋)
์ ์์ ํ ๊ตฌํ๋ฐฉ๋ฒ ๋น๊ต
- ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ
- ์ ํ ๊ตฌ์กฐ์ ์๋ฃ๊ตฌ์กฐ
- ์ฝ์ ๋๋ ์ญ์ ์ฐ์ฐ์ ์ํ ์๊ฐ๋ณต์ก๋๋ O(n)
- ํํธ๋ฆฌ
- ์์ ์ด์งํธ๋ฆฌ ๊ตฌ์กฐ
- ํํธ๋ฆฌ์ ๋์ด๋ logโ(n+1)
- ํ์ ์๊ฐ๋ณต์ก๋๋ O(logโn)
๊ตฌํ๋ฐฉ๋ฒ | ์ฝ์ | ์ญ์ |
---|---|---|
์์์๋ ๋ฐฐ์ด | O(1) | O(n) |
์์์๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ | O(1) | O(n) |
์ ๋ ฌ๋ ๋ฐฐ์ด | O(n) | O(1) |
์ ๋ ฌ๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ | O(n) | O(1) |
ํ | O(logโn) | O(logโn) |
์ฐ์ ์์ ํ ADT
(์ฐธ๊ณ )
๊ณต๋ถํ ๋ด์ฉ์ ์ฌ๋ฌ๊ธ๊ณผ ์ฑ
์ฝ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ ๋ฆฌํ๊ณ ์์ต๋๋ค.
์ข์ ๊ธ๋ก ์ ์ ๊ณต๋ถ์ ๋์์ ์ฃผ์๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค.