ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

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

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

programmers.co.kr

 

๋ฌธ์ œ ํ’€์ด

 ๋‚จ์€ ์ผ์˜ ์ž‘์—…๋Ÿ‰์ด ์žˆ์„ ๋•Œ, ์•ผ๊ทผ ์ง€์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ผ์˜ ์ž‘์—…๋Ÿ‰์ด ์žˆ๊ณ , ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ์žˆ๋‹ค๋ฉด ์ž‘์—…๋Ÿ‰์ด ๊ฐ€์žฅ ํฐ ์ž‘์—…๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ์•ผ๊ทผ ์ง€์ˆ˜๋Š” ์ž‘์—…๋Ÿ‰์˜ ์ œ๊ณฑ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„œ๋Š” Python์˜ ๊ฒฝ์šฐ heapq๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์–ด์•ผ ํ•œ๋‹ค. heapq๋Š” ์ตœ์†Œ ํž™์ด๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ ํž™์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Œ์ˆ˜ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ์•ผ ํ•œ๋‹ค. (์ด๋Š” works๊ฐ€ 1 ์ด์ƒ ์ด๊ธฐ์— ๊ฐ€๋Šฅํ•˜๋‹ค.)

 

์ฝ”๋“œ

from heapq import heapify, heappush, heappop


def solution(n, works):
    answer = 0
    works = [-work for work in works]
    heapify(works)
    
    while n:
        max_time = -heappop(works)
        
        if not max_time:
            break
            
        heappush(works, -(max_time - 1))
        n -= 1

    return sum(work ** 2 for work in works)
728x90
๋ฐ˜์‘ํ˜•
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€