본문 바로가기
프로그래머스/Lv.3

야근 지수 - Python, heap

by 아찌방 2024. 11. 17.

 

 

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

풀이 - 나의 생각

힙으로 변환하기 전에

 

주어진 작업량을 음수로 변환한다.

 

이럴 경우 최대값이 최소값으로 인식되기 때문이다.

 

[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