[프로그래머스] 야근 지수 문제 풀이

 


1. 문제

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

2. 풀이

  • 힙을 사용해서 제일 큰 숫자부터 1씩 빼주는 작업을 수행합니다. 가장 큰 수가 1씩 감소하는 것이 다른 수가 1씩 감소하는 것보다 훨씬 더 값을 줄일 수 있습니다.
import heapq

def solution(n, works):
    heap = []
    for x in works:
        heapq.heappush(heap, -x)
    
    for i in range(n):
        bigger = -heapq.heappop(heap)
        if bigger == 0:
            return 0
        heapq.heappush(heap, -bigger + 1)
    
    answer = 0
    print(heap)
    for x in heap:
        answer += (x ** 2)
    return answer