๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)๋Š” ์™„์ „์ด์ง„ํŠธ๋ฆฌ์ธ ํž™(Heap)์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

 

 

์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)

ํ(Queue)๋Š” FIFO(First in - First out)๊ตฌ์กฐ๋กœ ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค.

์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)๋Š” ๋“ค์–ด์˜จ ์ˆœ์„œ์™€๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

 

๋•Œ๋ฌธ์— ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋Š”๋ฐ ํšจ์œจ์ ์ธ ํž™(Heap)์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

- ํž™์ด ์•„๋‹Œ ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ธ๋ฑ์Šค๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ n๊ฐœ ์ผ ๋•Œ O(n)์ด ๋œ๋‹ค.

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

 

- ๊ทธ๋Ÿผ ํž™์„ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” ๋ญ˜๊นŒ?

ํž™์˜ ๊ฒฝ์šฐ ์™„์ „์ด์ง„ํŠธ๋ฆฌ๋กœ ๋ถ€๋ชจ์™€ ์ž์‹๊ฐ„์˜ ๋น„๊ต๋งŒ ๊ณ„์† ์ด๋ฃจ์–ด์ง„๋‹ค.

์ฆ‰, ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋งŒ ๋น„๊ตํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด์ง„ ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ํ•˜๋‚˜ ์ฆ๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ์ €์žฅ ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ์˜ ๊ฐฏ์ˆ˜๋Š” 2๋ฐฐ ์ฆ๊ฐ€ํ•˜๋ฉฐ, ๋น„๊ต ์—ฐ์‚ฐํšŸ์ˆ˜๋Š” 1ํšŒ ์ฆ๊ฐ€ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(log2n)์ด ๋œ๋‹ค.

๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ, index๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ญ์ œ๋Š” ๋งค์šฐ ๋น ๋ฅด๋‹ค. ํ•˜์ง€๋งŒ ์‚ฝ์ž…์˜ ๊ฒฝ์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค.

์‚ญ์ œ ์ธก๋ฉด์—์„œ๋Š” ๋ฐฐ์—ด/์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ€ ์šฐ์œ„๋ฅผ ์ ํ• ์ง€๋ผ๋„, ์‚ฝ์ž… ์ธก๋ฉด์—์„œ๋Š” ํž™์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์›”๋“ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์—

ํŽธ์ฐจ๊ฐ€ ์‹ฌํ•œ ๋ฐฐ์—ด/์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๋ณด๋‹ค๋Š” ํž™์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

 

ํž™(heap)

- ํž™์€ ์™„์ „์ด์ง„ํŠธ๋ฆฌ(Complete Binary Tree)๋‹ค.

- ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ž์‹๋…ธ๋“œ๋“ค ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. (์ค‘๋ณต๊ฐ’์ด ํ—ˆ์šฉ๋˜๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์„ ์ˆ˜ ์žˆ๋‹ค.)

- ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’๋‹ค.

์ตœ๋Œ€ ํž™(Max Heap) : ๋ถ€๋ชจ๋…ธ๋“œ ํ‚ค ๊ฐ’์ด ์ž์‹๋…ธ๋“œ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์™„์ „์ด์ง„ํŠธ๋ฆฌ

์ตœ์†Œ ํž™(Min Heap) : ๋ถ€๋ชจ๋…ธ๋“œ ํ‚ค ๊ฐ’์ด ์ž์‹๋…ธ๋“œ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์™„์ „์ด์ง„ํŠธ๋ฆฌ