Skip to content

Latest commit

ย 

History

History
52 lines (33 loc) ยท 2.63 KB

06-Heap.md

File metadata and controls

52 lines (33 loc) ยท 2.63 KB

ํž™ (Heap)

1. ํž™ (Heap) ์ด๋ž€?

ํž™์€ ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน์ •ํ•œ ๋ชฉ์ ์— ๋งž์ถฐ ๋ณ€ํ˜•๋œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

๋ฐ์ดํ„ฐ์—์„œ ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๊ธฐ์œ„ํ•ด์„œ ๋‹จ์ˆœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆผ (๋ฐฐ์—ด์— ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ๊ฒ€์ƒ‰ํ•ด์„œ ๊ทธ ์•ˆ์—์„œ ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๊ฒŒ๋˜๋ฉด O(n) ์‹œ๊ฐ„๋ณต์žก๋„๋งŒํผ ๊ฑธ๋ฆผ.)

โ†’ ์ด๊ฑฐ๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ค‘์— ํ•˜๋‚˜๊ฐ€ ํž™์ด๋‹ค.

(ํž™์„ ์‚ฌ์šฉํ•˜๋ฉด O(logn)์œผ๋กœ ์•„์ฃผ ๋งŽ์€ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ)

  • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ: ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์ตœํ•˜๋‹จ ์™ผ์ชฝ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์‚ฝ์ž…ํ•˜๋Š” ํŠธ๋ฆฌ
  • ํž™์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ :
    • ๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด O(n)์ด ๊ฑธ๋ฆผ
    • ์ด์— ๋ฐ˜ํ•ด, ํž™์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด O(logn)์ด ๊ฑธ๋ฆผ

2. ํž™ (Heap) ๊ตฌ์กฐ

์ตœ๋Œ€ ํž™๊ณผ ์ตœ์†Œ ํž™์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Œ

  • ์ตœ๋Œ€ ํž™(Max Heap) : ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ
  • ์ตœ์†Œ ํž™(Min Heap) : ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ

ํž™์—์„œ ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค.

๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€๊ฐ’ ๋˜๋Š” ์ตœ์†Œ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ํƒ์ƒ‰ํ•  ํ•„์š”์—†์ด ๋ฃจํŠธ ๋…ธ๋“œ๋งŒ ๋นผ์˜ค๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ์ ๊ฒŒ ๊ฑธ๋ฆฐ๋‹ค. (์ตœ๋Œ€, ์ตœ์†Œ๊ฐ’์„ ํ•ญ์ƒ ๋งˆ๋ จํ•ด๋†“๋Š” ๊ตฌ์กฐ๊ฐ€ ๋˜๋‹ˆ๊น)

โ†’ ๋ฌผ๋ก  ํž™ ์ •์ฑ…์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ์—๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ๋•Œ ํ•ญ์ƒ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ๊ฐ€๊ฒŒ ๋˜์–ด์žˆ๋Š” ๊ตฌ์กฐ

ํž™์€ ๋‘๊ฐ€์ง€ ์กฐ๊ฑด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž„

  1. ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ’์€ ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. (์ตœ๋Œ€ ํž™์ธ ๊ฒฝ์šฐ)
    1. ์ตœ์†Œ ํž™์˜ ๊ฒฝ์šฐ๋Š” ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ’์€ ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง„ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ์ž‘์Œ
  2. ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง

3. ํž™(์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ) vs ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ

  • ๊ณตํ†ต์ : ๋ชจ๋‘ ์ด์ง„ ํŠธ๋ฆฌ์ด๋‹ค. (์ž์‹๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ 2๊ฐœ์ธ๊ฒƒ)
  • ์ฐจ์ด์ 
    • ํž™(์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ)์€ ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์Œ (์ตœ๋Œ€ ํž™์ธ ๊ฒฝ์šฐ)
    • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’์ด ๊ฐ€์žฅ ์ž‘๊ณ , ๊ทธ๋‹ค์Œ ๋ถ€๋ชจ๋…ธ๋“œ, ๊ทธ๋‹ค์Œ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ ๊ฐ’์ด ๊ฐ€์žฅ ํผ
    • ํž™(์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ)์€ ์™ผ์ชฝ ๋ฐ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ์ด ํด ์ˆ˜๋„ ์žˆ๊ณ  ์™ผ์ชฝ์ด ํด ์ˆ˜๋„ ์žˆ์Œ
    • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ํƒ์ƒ‰์„ ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ,
    • ํž™์€ ์ตœ๋Œ€/์ตœ์†Œ๊ฐ’ ๊ฒ€์ƒ‰์„ ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ