์ฐ์ ์์ ํ (Priority Queue)
โ ์ฐ์ ์์ ํ?
ํ์ ์คํ์ด๋ ๋น์ทํ ์๋ฃํ์ด์ง๋ง, ๊ฐ ์์๋ค์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ์ด๋ค. ์ฐ์ ์์ ํ์์ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ์์๋ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ์์๋ณด๋ค ๋จผ์ ์ฒ๋ฆฌ๋๋ค. ๊ฐ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค๋ฉด, ๋จผ์ ๋ค์ด์จ ์์๋ฅผ ์ฒ๋ฆฌํ๋ค.
์ฐ์ ์์ ํ๋ ํ(Heap)์ด๋ผ๋ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ํตํด ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
์ฐ์ ์์ ํ๋ ์ต์ํ ๋ ๊ฐ์ง ์ฐ์ฐ์ด ์ง์๋์ด์ผ ํ๋ค.
- ํ๋์ ์์๋ฅผ ์ฐ์ ์์๋ฅผ ์ง์ ํ์ฌ ์ถ๊ฐํ๋ ํจ์ (Push)
- ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ์์๋ฅผ ํ์์ ์ ๊ฑฐํ๊ณ ๋ฐํํ๋ ํจ์ (Pop)
โ ํ(Heap) ์ด๋?
์์ ์ด์ง ํธ๋ฆฌ(Complete Binary Tree)๋ก, ๋ถ๋ชจ ๋ ธ๋์ ๊ฐ์ด ํญ์ ์์ ๋ ธ๋๋ค์ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋(Max Heap), ์์์ผ(Min Heap) ํ๋ค. ํ์ ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๊ฑฐ๋, ํ ์ ๋ ฌ์ ํ๋๋ฐ ์ฌ์ฉ๋๋ค. ๋ฃจํธ ๋ ธ๋์ ์๋ ๊ฐ์ด ์ต๋๊ฐ, ํน์ ์ต์๊ฐ์ด๋ฉฐ, ์์ ๋ ธ๋๋ค์ ๊ฐ์ ์์น๋ ๊ธฐ๋ณธ์ ์ธ ์กฐ๊ฑด๋ง ๋ง์ถ๋ฉด ๋๋ค.
โ ์ฐ์ ์์ ํ์ Push
- ๋งจ ๋ ์์น์ ๊ฐ์ ์ ์ฅ
- ๋ถ๋ชจ ๋
ธ๋์ ๋น๊ตํ๋ฉฐ, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ง ํ์ธ
- ๋ง์กฑํ์ง ์๋๋ค๋ฉด, ์๋ก ์์น๋ฅผ ๋ณ๊ฒฝ
โ์ฐ์ ์์ ํ์ Pop
- ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๊ฐ์ ์ญ์
- ๋งจ ๋์ ๋ ธ๋๋ฅผ ๋น์ด์๋ ๋ฃจํธ ๋ ธ๋๋ก ๋์ด์ด
- ๋ฃจํธ ๋
ธ๋์ ์์ ๋
ธ๋๋ค๊ณผ ๊ฐ์ ๋น๊ต, ์์น ๋ณ๊ฒฝ
- ์์น๋ฅผ ๋ง์กฑํ ๋๊น์ง ์์ ๋ ธ๋์ ์์น๋ฅผ ๋ณ๊ฒฝํ๋ฉฐ ์ฌ๋ฐ๋ฅธ ์์น๊น์ง ์ด๋
์ฐธ์กฐ https://velog.io/@mein-figur/Python%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84-%ED%81%90-heapq
'๐๏ธ Algorithm > ๐ท Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ํ์ด์ฌ ํน์ ๋ฌธ์ ์ฐพ๊ธฐ (find, startswith, endswith) (0) | 2022.03.21 |
---|