[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์•ผ๊ทผ ์ง€์ˆ˜ / ํŒŒ์ด์ฌ
Problem Solving ๐Ÿ”ฅ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์•ผ๊ทผ ์ง€์ˆ˜ / ํŒŒ์ด์ฌ

๋ฌธ์ œ ์„ค๋ช…

https://programmers.co.kr/learn/courses/30/lessons/12927

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์•ผ๊ทผ ์ง€์ˆ˜

ํšŒ์‚ฌ์› Demi๋Š” ๊ฐ€๋”์€ ์•ผ๊ทผ์„ ํ•˜๋Š”๋ฐ์š”, ์•ผ๊ทผ์„ ํ•˜๋ฉด ์•ผ๊ทผ ํ”ผ๋กœ๋„๊ฐ€ ์Œ“์ž…๋‹ˆ๋‹ค. ์•ผ๊ทผ ํ”ผ๋กœ๋„๋Š” ์•ผ๊ทผ์„ ์‹œ์ž‘ํ•œ ์‹œ์ ์—์„œ ๋‚จ์€ ์ผ์˜ ์ž‘์—…๋Ÿ‰์„ ์ œ๊ณฑํ•˜์—ฌ ๋”ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. Demi๋Š” N์‹œ๊ฐ„ ๋™์•ˆ ์•ผ๊ทผ ํ”ผ๋กœ๋„

programmers.co.kr

ํ’€์ด

ํ•ญ์ƒ ์ตœ๋Œ€, ์ตœ์†Œ ๊ฐ’์„ ์ ‘๊ทผํ•˜๋ฉด ๋˜๋‹ˆ, ํž™์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ฒ ๊ตฌ๋‚˜ ๋ผ๊ณ  ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ฌธ์ œ๋‹ค.
์ตœ๋Œ€ํž™์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด, ์Œ์ˆ˜๋ฅผ ๋„ฃ์—ˆ๊ณ , ์Œ์ˆ˜๋ฅผ ๋„ฃ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— +1์„ ๋”ํ•˜์—ฌ ํ’€์—ˆ๋‹ค.
๊ทธ ์™ธ, ์ผ์ด ์‚ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ, ํž™์ด ๋น„์—ˆ์„ ๊ฒฝ์šฐ๋ฅผ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค.
์ฒ˜๋ฆฌ๊ณผ์ •์ด ๊น”๋”ํ•˜์ง€๋Š” ์•Š๋‹ค.

import heapq

def solution(n, works):
    answer = 0
    h = []
    for w in works:
        heapq.heappush(h, -w)
    for i in range(n):
        if len(h) == 0:
            break
        x = heapq.heappop(h)
        x += 1
        if x != 0:
            heapq.heappush(h, x) 
    for w in h:
        answer += w ** 2
    return answer