입출력 예 설명
-입출력 예 #1
n=4 일 때, 남은 일의 작업량이 [4, 3, 3] 이라면 야근 지수를 최소화하기 위해 4시간동안 일을 한 결과는 [2, 2, 2]입니다. 이 때 야근 지수는 22 + 22 + 22 = 12 입니다.
-입출력 예 #2
n=1일 때, 남은 일의 작업량이 [2,1,2]라면 야근 지수를 최소화하기 위해 1시간동안 일을 한 결과는 [1,1,2]입니다. 야근지수는 12 + 12 + 22 = 6입니다.
-입출력 예 #3
접근법
합이 가장 작으려면 최대인 값을 가져와 -1씩 해줘야 합니다. heapq는 자동으로 오름차순 정렬이 되기 때문에 (-value, value)를 넣으면 가장 큰 수로 정렬이 됩니다.(앞에 -가 붙기 때문에) 따라서 가장 위의 수를 pop한뒤 출력의[1]에 -1을 해주고 다시 넣어줍니다. 이를 n만큼 반복한 뒤 더해주시면 됩니다.
나의 코드
import heapq
def solution(n, works):
if sum(works) < n: return 0
heap = []
for value in works:
heapq.heappush(heap,(-value,value))
print(heap)
for i in range(n):
update = heapq.heappop(heap)
value = update[1] - 1
heapq.heappush(heap,(-value,value))
works = [num[1]**2 for num in heap]
return sum(works)