๐Ÿงฌ ํž™

๐Ÿช C:onยท2021๋…„ 8์›” 8์ผ
0

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชฉ๋ก ๋ณด๊ธฐ
3/6

ํž™(heap)


ํž™์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ผ์ข…์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์œ„ํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์™„์ „์ด์ง„ํŠธ๋ฆฌ๋ž€ ๋งˆ์ง€๋ง‰์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์ž์‹๋“ค์ด ๊ฝ‰ ์ฑ„์›Œ์ง„ ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.

์šฐ์„ ์ˆœ์œ„ ํ๋ž€ ์šฐ์„ ์ˆœ์œ„์˜ ๊ฐœ๋…์„ ํ์— ๋„์ž…ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋“ค์ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ์ถ”์ถœ๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

์šฐ์„ ์ˆœ์œ„ ํ ํ™œ์šฉ

  • ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ
  • ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ์ œ์–ด
  • ์šด์˜ ์ฒด์ œ์—์„œ์˜ ์ž‘์—… ์Šค์ผ€์ฅด๋ง
  • ์ˆ˜์น˜ ํ•ด์„์ ์ธ ๊ณ„์‚ฐ


ํž™์˜ ์ข…๋ฅ˜


์ตœ๋Œ€ํž™

๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ๋“ค์˜ ๊ฐ’๋ณด๋‹ค ํ•ญ์ƒ ํฌ๋‹ค

์ตœ์†Œํž™

๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ๋“ค์˜ ๊ฐ’๋ณด๋‹ค ํ•ญ์ƒ ์ž‘๋‹ค

ํž™์„ ์ €์žฅํ•˜๋Š” ํ‘œ์ค€์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฐฐ์—ด์ด๋‹ค.

ํž™์—์„œ์˜ ๋ถ€๋ชจ๋…ธ๋“œ์™€ ์ž์‹๋…ธ๋“œ์˜ ๊ด€๊ณ„

  • ์™ผ์ชฝ ์ž์‹์˜ ์ธ๋ฑ์Šค = ๋ถ€๋ชจ์˜ ์ธ๋ฑ์Šค * 2
  • ์˜ค๋ฅธ์ชฝ ์ž์‹์˜ ์ธ๋ฑ์Šค = ๋ถ€๋ชจ์˜ ์ธ๋ฑ์Šค *2 + 1
  • ๋ถ€๋ชจ์˜ ์ธ๋ฑ์Šค = ์ž์‹์˜ ์ธ๋ฑ์Šค / 2


ํž™์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ


์‚ฝ์ž…

์ƒˆ๋กœ์šด ์š”์†Œ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์— ์ด์–ด์„œ ์‚ฝ์ž…ํ•˜๊ณ  ๋ถ€๋ชจ ๋…ธ๋“œ๋“ค๊ณผ ๊ตํ™˜ํ•ด์„œ ํž™์˜ ์„ฑ์งˆ์„ ๋งŒ์กฑํ•˜๋ฉด ๋ฐ˜๋ณตํ•œ๋‹ค.


์‚ญ์ œ

๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ์‚ญ์ œ๋œ ๋ฃจํŠธ๋…ธ๋“œ์— ํž™์˜ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„ ํž™์„ ์žฌ๊ตฌ์„ฑํ•œ๋‹ค.



ํŒŒ์ด์ฌ ํž™ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ


์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š” ์—ฐ์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ํ•  ๋•Œ heapq ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค.

heapq๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ์†Œํž™์„ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํž™์€ ํŠœํ”Œ์€ ์‚ฌ์šฉํ•œ ๋‹ค๋ฅธ ์š”๋ น์ด ํ•„์š”ํ•˜๋‹ค.

import heapq

heap = []
heapq.heappush(heap, 50)
heapq.heappush(heap, 10)
heapq.heappush(heap, 20)

result = heapq.heappop(heap)

print(result)

10


๋งŒ์•ฝ ์ด๋ฏธ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด heapfipy๋ฅผ ํ†ตํ•ด ํž™ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

heap2 = [50 ,10, 20]
heapq.heapify(heap2)

print(heap2)

[10, 50, 20]

0๊ฐœ์˜ ๋Œ“๊ธ€