๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Algorithm/์ฝ”๋”ฉํ…Œ์ŠคํŠธ

2022.05.18 ใ€ŒLv.2 Heap ๋” ๋งต๊ฒŒใ€

by GroovyArea 2022. 5. 18.
์ž๋ฃŒ๊ตฌ์กฐ ์ •๋ฆฌํ•ด์•ผ์ง€ ๊ณ„ํš๋งŒ ํ•˜๊ณ  ๋ˆˆ์œผ๋กœ๋งŒ ๊ฐœ๋…๋“ค์„ ๋ณด๊ณ  ์ •๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค.. ๋ˆˆ์œผ๋กœ ์ฝ๊ณ  ์ฝ”๋“œ ์ž‘์„ฑํ•ด๋ด๋„ ์–ด๋Š ์ •๋„๋Š” ๊ฐ์ด ์˜ค๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋น ๋ฅธ ์‹œ์ผ ๋‚ด์— ์ •๋ฆฌ ์ข€ ํ•ด์•ผ๊ฒ ๋‹ค ์ •๋ง
์˜ค๋Š˜์€ ์˜ค์ „์— Heap์„ ์ด์šฉํ•œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. Lv2์ด๋‹ค. ์˜ˆ์ „์—๋Š” Lv1๋„ ์–ด๋ ค์› ๊ณ , ๋ฌธ์ œ ์ž์ฒด๋„ ์ดํ•ด๊ฐ€ ์•ˆ ๋˜์—ˆ๋Š”๋ฐ ํ’€๋‹ค ๋ณด๋‹ˆ ์ข€ ๊ฐ์ด ์˜ค๋Š” ๋“ฏํ•˜๋‹ค..?? ๋‘ ๋‹ฌ ์•ˆ์— Lv3๊นŒ์ง€ ๋งˆ์Šคํ„ฐ ๋ชฉํ‘œ๋ฅผ ์žก์ž. ์ทจ์—…ํ•˜๊ณ  ์‹ถ๋‹ค!!
Heap์ด๋ž€ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ์™€ ๊ฑฐ์˜ ๋น„์Šทํ•œ๋ฐ ์˜ˆ์ „์— ์ž ๊น ์ด์ง„ ํŠธ๋ฆฌ์— ๋Œ€ํ•ด์„œ ๊ฐœ๋…์„ ๋ณธ ๊ธฐ์–ต์ด ์žˆ์—ˆ๋Š”๋ฐ ๊ฐœ๋…์„ ๋จผ์ € ๋ณด๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. ๊ฒฐ๊ตญ Heap์ด ์šฐ์„ ์ˆœ์œ„ Queue (PriorityQueue)๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Heap์„ ์ด์šฉํ•˜๋Š” ๊ฑด๋ฐ ๊ทธ์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ์ด๋ฏ€๋กœ ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. 

 

๋ฌธ์ œ ์„ค๋ช…

๋งค์šด ๊ฒƒ์„ ์ข‹์•„ํ•˜๋Š” Leo๋Š” ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Leo๋Š” ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๋‘ ๊ฐœ์˜ ์Œ์‹์„ ์•„๋ž˜์™€ ๊ฐ™์ด ํŠน๋ณ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ž์–ด ์ƒˆ๋กœ์šด ์Œ์‹์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์„ž์€ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ = ๊ฐ€์žฅ ๋งต์ง€ ์•Š์€ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ + (๋‘ ๋ฒˆ์งธ๋กœ ๋งต์ง€ ์•Š์€ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ * 2)

Leo๋Š” ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ K ์ด์ƒ์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜์—ฌ ์„ž์Šต๋‹ˆ๋‹ค.
Leo๊ฐ€ ๊ฐ€์ง„ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด scoville๊ณผ ์›ํ•˜๋Š” ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ K๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์„ž์–ด์•ผ ํ•˜๋Š” ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ
  • scoville์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 1,000,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • K๋Š” 0 ์ด์ƒ 1,000,000,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • scoville์˜ ์›์†Œ๋Š” ๊ฐ๊ฐ 0 ์ด์ƒ 1,000,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ์ดํ•ด

์œ„์˜ ์„ž์€ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋กœ ๋ณด์•˜์„ ๋•Œ,

PriorityQueue๋ฅผ ์ด์šฉํ•ด ๊ธฐ๋ณธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ ๊ฐ’๋“ค์„ ๋„ฃ์œผ๋ฉด ๋ฃจํŠธ ๋…ธ๋“œ๋กœ๋Š” ๊ฐ€์žฅ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ ๋‚ฎ์€ ์Œ์‹์ด ๋œ๋‹ค. 

์ด๋ฅผ ์ด์šฉํ•ด ๊ฐ’์„ ๋‘ ๊ฐœ ๊บผ๋‚ด๋ฉด ์ž๋™์œผ๋กœ ์„ž์€ ์Œ์‹ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ ๊ณต์‹์„ ๋งŒ์กฑํ•˜๋Š” ์กฐ๊ฑด์˜ ๊ฐ’์ด ๋‚˜์˜ค๋ฏ€๋กœ ์ด ๋‘˜์„ ์ด์šฉํ•ด ๋น„๊ตํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค.

 

ํ’€์ด ์ฝ”๋“œ

์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ข€ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํ’€๋‹ค ๋ณด๋‹ˆ ์–ด๋Š ์ •๋„ ๋น„์Šทํ•˜๊ณ  ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค. ์ ์ ˆํžˆ ์ดํ•ดํ•˜๋ฉฐ ์‘์šฉํ•˜๋ฉฐ ํ’€์ด ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒํ•ด์•ผ๊ฒ ๋‹ค.

๋ฐ˜์‘ํ˜•