프로그래머스 / 야근 지수 / python

맹민재·2023년 4월 27일
0

알고리즘

목록 보기
81/134
from heapq import heappop, heappush, heapify

def solution(n, works):
    answer = 0
    if sum(works) < n:
        return 0
    
    works = list(map(lambda x: -x, works))
    heapify(works)
    
    while n:
        n-= 1
        heappush(works, -(-heappop(works) - 1))
    
    answer = sum(list(map(lambda x: pow(x,2), works)))
    return answer

최대 힙을 통해 해결한 문제

한 시간에 하니의 작업량 처리가능 하므로 n을 1씩 빼면서 works 중 하나의 작업 량도 하나 씩 뺀다.

이때 야근 지수를 최소화 하려면 최대 값의 숫자를 빼야한다.

ex) 2, 4 가 있을 때 2를 뺄때의 야근지수 -> 1 * 1 + 4 * 4 = 17 
				  4를 뺄때의 야근지수 -> 2 * 2 + 3 * 3 = 13

즉 최대힙을 통해 1씩 빼고 다시 넣어 주는 방법으로 해결 할 수 있다.

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글