각 원소의 제곱의 합을 야근 지수로 결정하는 까닭에, '최댓값'을 작게 만들어야 한다. 즉 한 번 값을 뺄 때마다 리스트 내 최댓값을 리턴하고, 여기에 1을 뺀 값을 다시 더해주어야 하는데, 일반 max 함수 및 sort를 쓸 경우 시간이 오래 걸린다. 파이썬이 제공하는 힙큐 모듈을 사용하고, 최댓값을 출력해야 하므로 -1을 곱한 값을 우선순위로 삼아두자.
import heapq
def solution(n, works):
heap = []
for work in works:
heapq.heappush(heap, (-work, work))
for _ in range(n):
largest = heapq.heappop(heap)[1] - 1
heapq.heappush(heap, (-largest, largest))
answer = 0
for work in heap:
if work[1]>0:
answer += work[1]**2
return answer