๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋” ๋งต๊ฒŒ (level2, python)

๊ฐœ๋ฐœ์ž HOON 2022. 9. 12. 19:05

๋ฌธ์ œ ์„ค๋ช…

๋งค์šด ๊ฒƒ์„ ์ข‹์•„ํ•˜๋Š” 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 ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

 

  1. ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ 1์ธ ์Œ์‹๊ณผ 2์ธ ์Œ์‹์„ ์„ž์œผ๋ฉด ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค.
    ์ƒˆ๋กœ์šด ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ = 1 + (2 * 2) = 5
    ๊ฐ€์ง„ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ = [5, 3, 9, 10, 12]
  2. ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ 3์ธ ์Œ์‹๊ณผ 5์ธ ์Œ์‹์„ ์„ž์œผ๋ฉด ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค.
    ์ƒˆ๋กœ์šด ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ = 3 + (5 * 2) = 13
    ๊ฐ€์ง„ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ = [13, 9, 10, 12]

 

๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ 7 ์ด์ƒ์ด ๋˜์—ˆ๊ณ  ์ด๋•Œ ์„ž์€ ํšŸ์ˆ˜๋Š” 2ํšŒ์ž…๋‹ˆ๋‹ค.


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

import heapq

def solution(scoville, K):
    answer = 0
    heapq.heapify(scoville)
    
    while True:
        min_sco = heapq.heappop(scoville)
        if min_sco < K and len(scoville) == 0:
            answer = -1
            break
            
        if min_sco >= K:
            break
            
        else:
            next_sco = heapq.heappop(scoville)
            heapq.heappush(scoville, min_sco + next_sco * 2)
            answer += 1
    
    return answer

ํž™์„ ์ด์šฉํ•ด์„œ ํ’€์ดํ•  ์ˆ˜ ์žˆ๋‹ค.

ํž™์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ ๋‘ ๊ฐ€์ง€๋ฅผ ๋ฝ‘์•„ ์ฃผ์–ด์ง„ ์‹์— ๋งž๊ฒŒ ๊ตฌ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

1) heappop ์ดํ›„์— ํž™์— ๋‚จ์€ ๊ฒƒ์ด ์—†๊ณ , ๊ฐ’์ด K ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜๊ณ ,

2) ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’๋งˆ์ € K๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์ฃผ๋ฉด ์‰ฝ๊ฒŒ ํ’€์ดํ•  ์ˆ˜ ์žˆ๋‹ค.