[프로그래머스] 야근 지수

HoyongLee·2022년 10월 1일
0

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12927

풀이

import heapq


def solution(n, works):
    answer = 0
    work_max_heap = []
    if sum(works) <= n:
        return 0
    for work in works:
        heapq.heappush(work_max_heap, (-work, work))
    while n > 0:
        popped = heapq.heappop(work_max_heap)
        heapq.heappush(work_max_heap, (popped[0] + 1, popped[1] - 1))
        n -= 1
    for minus_work, work in work_max_heap:
        answer += work**2
    
    return answer

큰 수를 작게 줄여주는게 포인트다... 그건 알고 있어서 시도를 해봤지만 결국 실패해서 구글링 해봤다.
heapq를 사용해서 가장 큰 수를 계속 추적하고 1씩 깎는다. 그리고 제곱합을 구하면 된다..
생각보다 간단했다...

profile
아직 반지하

0개의 댓글