1. 문제
https://programmers.co.kr/learn/courses/30/lessons/12927
2. 풀이
- 힙을 사용해서 제일 큰 숫자부터 1씩 빼주는 작업을 수행합니다. 가장 큰 수가 1씩 감소하는 것이 다른 수가 1씩 감소하는 것보다 훨씬 더 값을 줄일 수 있습니다.
import heapq
def solution(n, works):
heap = []
for x in works:
heapq.heappush(heap, -x)
for i in range(n):
bigger = -heapq.heappop(heap)
if bigger == 0:
return 0
heapq.heappush(heap, -bigger + 1)
answer = 0
print(heap)
for x in heap:
answer += (x ** 2)
return answer
PREVIOUS[프로그래머스] 문자열을 정수로 바꾸기 문제 풀이