Priority Queue ๋?
์ผ๋จ ์ด์ ์ ๋ฐฐ์ ๋ 'ํQueue'๋ ์คํ๊ณผ ๋ฐ๋๋ก '๋จผ์ ๋ค์ด์จ๊ฒ์ด ๋จผ์ ๋๊ฐ๋' FIFO ๋ฐฉ์์ ์๋ฃ๊ตฌ์กฐ๋ค. ํน์ง์ผ๋ก๋ ์คํ๊ณผ ๋ฌ๋ฆฌ ๋ค์ด๊ฐ๋ ๋ฐฉํฅ๊ณผ ๋์ค๋ ๋ฐฉํฅ์ด ๋ฌ๋ผ์ ์กฐ๊ธ์ ๊ตฌํํ๊ธฐ ๊น๋ค๋ก์ ๋ค๋ ์ .
์ฐ์ ์์ํ์์๋ ๋ค์ด์จ ์์๋ ์๊ด ์์ด ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํด ๊ทธ ์ฐ์ ์์๋๋ก ๋๊ฐ๋ ํ๋ค.
์ ์ฉ ์ฌ๋ก๋ค :
- ๋ฐ์ดํฐ ์์ถ : ํํ๋ง ์๊ณ ๋ฆฌ์ฆ
- ์ต๋จ ๊ฑฐ๋ฆฌ : ๋ค์ดํฌ์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ
- ์ต์ ์ ์ฅ ํธ๋ฆฌ : ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ
๊ตฌํ ๋ฐฉ๋ฒ
๊ธฐ๋ณธ์ ์ธ ๊ตฌํ
์ ๋ ฌ๋์ง ์์ ๋ฐฐ์ด๋ก ๊ตฌํ ์ ๋ ฌ๋์ง ์์ (๋งํฌ๋)๋ฆฌ์คํธ๋ก ๊ตฌํ ์ ๋ ฌ๋ ๋ฐฐ์ด๋ก ๊ตฌํ ์ ๋ ฌ๋ (๋งํฌ๋)๋ฆฌ์คํธ๋ก ๊ตฌํ
์ ๋ ฌ๋์ง ์์๊ฒ๊ณผ ์ ๋ ฌ๋๊ฒ์ ์ฐจ์ด๋ ์๋ฃ๋ฅผ ์ฝ์ ํ ๋ ๋ง์ ์ผ์ ํ ๊ฒ์ด๋, ๊บผ๋ผ ๋ ๋ง์ ์ผ์ ํ ๊ฒ์ด๋์ ์ฐจ์ด๋ค. ์ ๋ ฌ๋์ง ์๊ณ ๊ตฌํํ๋ ค๋ฉด ์ฝ์ ์ ๊ทธ๋ฅ ๋งจ ๋ง์ง๋ง index์ ์ถ๊ฐํ๊ณ , ๊บผ๋ผ ๋ (์ฐ์ ์์ ๊ธฐ์ค์ด '๊ฐ์ฅ ์์ ๊ฐ'์ด๋ผ๋ฉด) ๊ทธ๋๋ง๋ค ๊ฐ์ฅ ์์ ๋ ธ๋๋ฅผ ์ฐพ๊ณ ๊ทธ ๋ ธ๋๋ฅผ ๊ฐ์ ธ์ค๋๊ฒ. (์ฝ์ ์์ $O(1)$, ๊บผ๋ผ์์ $O(n)$์ ๋ณต์ก๋) ์ ๋ ฌ์์ผ ๊ตฌํํ๋ ค๋ฉด ์ฝ์ ์ ํ ๋๋ง๋ค ์์ ๋ณด๋ค ํฐ ๊ฒ์ index๋ฅผ ์ฐพ์ ๊ทธ ์๋ฆฌ์ ๋ฃ๊ณ ๋๋จธ์ง ๋ค์ ๋ ธ๋๋ค์ ํ i์นธ์ฉ ์ด๋์ํค๊ณ , ๊บผ๋ผ๋๋ ์ฆ์ ๋ฐ๋ก ๋งจ ์์ ๋ ธ๋๋ฅผ ๊บผ๋ด๋ฉด ๋๋ค. (๋ฐ๋๋ก ์ฝ์ ์์ $O(n)$, ๊บผ๋ผ์์ $O(1)$์ ๋ณต์ก๋)
์ด์ง ํธ๋ฆฌ ๊ตฌํ
์ด์ง ๊ฒ์ ํธ๋ฆฌ ๊ตฌํ : ์ฝ์ ๊ณผ ์ญ์ ๋ชจ๋ ํ๊ท $O(logn)$์ ๋ณต์ก๋. ์ต์ ์ ๊ฒฝ์ฐ(๊ทน๋จ์ ์ผ๋ก ๊ฒฝ์ฌ์ ธ์ ๋ฆฌ์คํธ์ ๊ฑฐ์ ๋ค๋ฅผ๋ฐ ์๋ ํธ๋ฆฌ) $O(n)$.
๊ท ํ ์ด์ง ๊ฒ์ ํธ๋ฆฌ ๊ตฌํ : ์ฝ์ ๊ณผ ์ญ์ ๋ชจ๋ ์ต์ ์ ๊ฒฝ์ฐ $O(logn)$
์์์ ๋ณธ ๋ฐฐ์ด,๋ฆฌ์คํธ ๊ตฌํ์์ ์ ๋ ฌ ์ฌ๋ถ์ ๋ฐ๋ผ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๊ฐ๊ฐ ํ์ ํ ๋ค๋ฅธ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค. ๊ทธ๋์ ์ฉ๋๋ณ๋ก ์ฝ์ ์ด ๋ง์ผ๋ฉด ๋น์ ๋ ฌ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๊ณ , ์ญ์ ๊ฐ ๋ง์ผ๋ฉด ์ ๋ ฌ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ฉด ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฝ์ ๊ณผ ์ญ์ ๋ชจ๋ ์ผ์ ํ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ธธ ์ํ๋ค๋ฉด ์ด์ง ๊ฒ์ ํธ๋ฆฌ๋ก ๊ตฌํํ๋ฉด ๋๋ค.
์ด์ง ํ ๊ตฌํ
'ํHeap'์ด๋ผ๋ ์์ง ๋ฐฐ์ด์ ์๋ ์๋ฃ ๊ตฌ์กฐ๋ก๋ ๊ตฌํํ ์ ์๋ค. ๋ฐ๋ก ๋ค์ ์์ ์์ ๋ค๋ฃฌ๋ค๊ณ .