알고리즘
PG) 야근지수 -lv3
1일1공부실천하자
2024. 7. 7. 20:27
https://school.programmers.co.kr/learn/courses/30/lessons/12927
import heapq
def solution(n, works):
if n >= sum(works):
return 0
works = [-i for i in works]
heapq.heapify(works)
for _ in range(n):
mx = heapq.heappop(works)
mx += 1
heapq.heappush(works,mx)
return sum([i ** 2 for i in works])
제곱근의 합 중 가장 작은 수를 구하는 문제이다.
이렇게 말로 들으면 어떻게 풀어야할지 감이 잡히지만 사실 이 문제는 1시간을 고민했고 답을 도출하지 못했다.
제곱근의 합에서 가장 큰 수를 구하기 위해선 가장 큰 값을 줄여주어야한다.
하지만 배열을 정렬하는 과정에서는 시간 초과가 나오기 때문에 heap정렬을 이용해 정렬을 수행해야한다.