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정렬을 이용해 정렬을 수행해야한다.
'알고리즘' 카테고리의 다른 글
PG)숫자 게임 -lv3 (0) | 2024.07.10 |
---|---|
PG) 단어 변환 - lv3 (0) | 2024.07.08 |
PG) 네트워크 - lv3 (0) | 2024.07.06 |
프로그래머스) 정수 삼각형 - lv3 (0) | 2024.07.06 |
BOJ)괄호 추가하기 3 (0) | 2024.06.28 |