https://programmers.co.kr/learn/courses/30/lessons/12927
문제에서 주어진 배열에서 가장 큰 원소를 찾고 1씩 감소시키는 것이 문제의 요구사항이었다.
1씩 감소시킬때 마다 가장 큰 원소가 바뀔 수 있기 때문에 계속해서 찾아주어야 하는데 이때, 최대힙을 이용해 빠르게 최댓값을 구할 수 있었다.
import heapq
def solution(n, works):
heap = []
if(sum(works) <= n):
return 0
for work in works:
heapq.heappush(heap, (-work, work))
while n > 0:
x = heapq.heappop(heap)
t = (-(x[1]-1),x[1]-1)
n -= 1
heapq.heappush(heap,t)
temp = list(map(lambda x: x[0]*x[0],heap))
return sum(temp)