Priority Queue
์๋ฃ๊ตฌ์กฐ | ์ฒ๋ฆฌ์์ |
LIFO : ๋์ค์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ์ฒ๋ฆฌ | |
FIFO : ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ์ฒ๋ฆฌ | |
Priority Queue | ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ์ฒ๋ฆฌ |
์ฐ์ ์์ ํ๋ ๋ค์ด๊ฐ ์์์ ์๊ด์์ด ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์จ๋ค.
์๋ฎฌ๋ ์ด์ ์์คํ (ex) ์ถ๋ฐ์๊ฐ, ๋๊ธฐ์๊ฐ, ์์์๊ฐ
๋คํธ์ํฌ ํธ๋ํฝ ์ ์ด
์ด์ ์ฒด์ ์์์ ์์ ์ค์ผ์ฅด๋ง
๋ฐ์ดํฐ๋ฅผ ๊ทผ๊ฑฐ๋ก ์ฐ์ ์์๋ฅผ ํ๋จํด์ผํ๋ฉฐ, ๋ชฉ์ ์ ๋ง๊ฒ ์ฐ์ ์์๋ฅผ ์ ํด์ผํ๋ค. ์ฐ์ ์์๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ ์กด์ฌํ ์ ์๋ค.
์ฐ์ ์์ ํ์์ ๊ฐ์ฅ ์ค์ํ ์ฐ์ฐ์ ์ฝ์ (insert)๊ณผ ์ญ์ (delete)์ด๋ค.
์ฐ์ฐ | ์ค๋ช |
create() | ์ฐ์ ์์ ํ๋ฅผ ์์ฑ |
init(q) | ์ฐ์ ์์ ํ q ์ด๊ธฐํ |
is_empty(q) | ์ฐ์ ์์ ํ q๊ฐ ๋น์ด์๋์ง ๊ฒ์ฌ |
is_full(q) | ์ฐ์ ์์ ํ q๊ฐ ๊ฐ๋์ฐผ๋์ง ๊ฒ์ฌ |
insert(q,x) | ์ฐ์ ์์ ํ q์ x์ถ๊ฐ |
delete(q) | ์ฐ์ ์์ํ๋ก๋ถํฐ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ์์ ์ญ์ , ๋ฐํ |
find(q) | ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ์์ ๋ฐํ |
๊ตฌํ๋ฐฉ๋ฒ
์ฐ์ ์์ ํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ์ ์๋ค.
๋ฐฐ์ด์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ
์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ
ํ(Heap)์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ
๋ฐฐ์ด์ด๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด์ ๊ตฌํํ๋ฉด ํ๋ณด๋ค๋ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์์ผ๋ ๋จ์ ์ด ์๋ค.
๋ฐฐ์ด
๋ฐ์ดํฐ ์ฝ์ ๋ฐ ์ญ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ํ๋ ์ฐ์ฐ์ ๊ณ์ํด์ผํ๋ค. (๋น๊ธฐ๊ฑฐ๋ ๋ฐ์ด์ผํ๋)
์ฝ์ ์์น๋ฅผ ์ฐพ๊ธฐ ์ํด์ ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ชจ๋ ๋ฐ์ดํฐ์ ์ฐ์ ์์๋ฅผ ๋น๊ตํด์ผํ๋ค.
์ฐ๊ฒฐ๋ฆฌ์คํธ
์ฝ์ ์์น๋ฅผ ์ฐพ๊ธฐ์ํด์ ๋ชจ๋ ๋ ธ๋์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ฐ์ ์์๋ฅผ ๋น๊ตํด์ผํ๋ค.
๋ฐ์ดํฐ๊ฐ ์ ์ ๊ฒฝ์ฐ์๋ ๋จ์ ์ด ์๋ ์๋ ์์ง๋ง ๋ฐ์ดํฐ๊ฐ ๋ง์์ง๋ฉด ๋น๊ตํ ๋์์ด ๋ง์์ ธ ์ฑ๋ฅ์ด ์ ํ๋๋ค.
ํ์ ์์ ์ด์งํธ๋ฆฌ๋ก ๊ตฌํํ๋ค. ํ์ ๋ํ ์์ธํ ์ค๋ช ์ ํ(Heap) ๊ฒ์๋ฌผ์์ ํ๋ค.
ํํ๋ฐฉ๋ฒ | ์ฝ์ | ์ญ์ |
์์์๋ ๋ฐฐ์ด | O(1) | O(n) |
์์์๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ | O(1) | O(n) |
์ ๋ ฌ๋ ๋ฐฐ์ด | O(n) | O(1) |
์ ๋ ฌ๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ | O(n) | O(1) |
ํ(Heap) | O(logn) | O(logn) |
์ด๋ฌํ ์ฑ๋ฅ์ฐจ์ด๋ก ์ฃผ๋ก Heap์ ์ด์ฉํด์ ์ฐ์ ์์ํ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
Last updated