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

이재윤·2025년 1월 27일

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

1) 코드

import heapq 
import math 

def solution(n, works):
    answer = 0
    
    total = 0
    q = [] 
    
    for work in works:
        heapq.heappush(q, -work)
        total += work
        
    if n >= total:
        return 0
    
    
    while n != 0: 
        
        num = (-1)*heapq.heappop(q)
        num -= 1
        n -= 1 
        
        if num >= 1:
            heapq.heappush(q, -num)
        
    while q:
        answer += math.pow(-heapq.heappop(q), 2)
        
    
    return answer

2) 해설

  • 우선순위 큐의 개념을 알고 적용한다면 쉽게 풀 수 있는 문제이다

0개의 댓글