https://school.programmers.co.kr/learn/courses/30/lessons/12927
풀이 - 나의 생각
힙으로 변환하기 전에
주어진 작업량을 음수로 변환한다.
이럴 경우 최대값이 최소값으로 인식되기 때문이다.
[3, 4, 5] -> [-5, -4, -3]
그 뒤는 그러면 간단하다
주어진 n만큼 돌면서
최소값을 pop하고 +1해서 힙에 넣어준다
그 후 제곱하면서 더해주면 끝이다.
코드
import heapq
def solution(n, works):
if sum(works) <= n:
return 0
answer = 0
works = [-work for work in works]
heapq.heapify(works)
for _ in range(n):
largest = heapq.heappop(works)
heapq.heappush(works,largest+1)
return sum(work ** 2 for work in works)
728x90
'프로그래머스 > Lv.3' 카테고리의 다른 글
여행 경로 - Python, dfs, 히에로홀드 경로(Eulerian Path) (1) | 2024.11.20 |
---|---|
여행경로 - Python, dfs, stack (0) | 2024.11.18 |
베스트앨범 - Python, defaultdict, sort, sorted (2) | 2024.11.06 |
네트워크 - BFS (1) | 2024.07.22 |
합승 택시 요금 - JAVA, 다익스트라 알고리즘(Dijkstra Algorithm) (0) | 2024.05.25 |