import heapq
def solution(no, works):
result = 0
works = [-i for i in works]
heapq.heapify(works)
for i in range(no):
# 모든 작업을 0으로 만들었음에도 no이 남으면 계속해서 더해지는 예외상황이 존재
# -> works[0] (가장 큰 값)이 0이 아닐때 조건 추가
if works[0] != 0:
task = heapq.heappop(works) + 1
heapq.heappush(works, task)
for i in works:
result += i ** 2
return result
최대힙을 이용해야하는 문제.
파이썬은 최소힙을 default로 제공하고, 최대힙은 제공해주지 않지만, heapify를 할때 "-"를 붙여줌으로써 최대힙처럼 이용할 수 있다.
works = [-i for i in works]
모든 작업을 0으로 만들었음에도 no이 남으면 계속해서 더해지는 예외상황이 존재해서 처음에 이부분을 놓쳐 조금 애먹었었다.
import heapq
def solution(n, works):
# 최대힙 구성
works = [-i for i in works]
heapq.heapify(works)
for i in range(n):
if works[0] != 0:
heapq.heapreplace(works, works[0] + 1)
return sum([i ** 2 for i in works])