from heapq import heappop, heappush, heapify
def solution(n, works):
answer = 0
if sum(works) < n:
return 0
works = list(map(lambda x: -x, works))
heapify(works)
while n:
n-= 1
heappush(works, -(-heappop(works) - 1))
answer = sum(list(map(lambda x: pow(x,2), works)))
return answer
최대 힙을 통해 해결한 문제
한 시간에 하니의 작업량 처리가능 하므로 n을 1씩 빼면서 works 중 하나의 작업 량도 하나 씩 뺀다.
이때 야근 지수를 최소화 하려면 최대 값의 숫자를 빼야한다.
ex) 2, 4 가 있을 때 2를 뺄때의 야근지수 -> 1 * 1 + 4 * 4 = 17
4를 뺄때의 야근지수 -> 2 * 2 + 3 * 3 = 13
즉 최대힙을 통해 1씩 빼고 다시 넣어 주는 방법으로 해결 할 수 있다.