title: "[프로그래머스] 야근 지수 Python 파이썬 해설 (Level 3) - 이도훈"
cleanUrl: "programmers/12927"
description: "프로그래머스 Level 3 문제 [야근 지수]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

from collections import Counter

def solution(n, works):
    if sum(works) <= n:
        return 0
    
    cnt = Counter(works)
    while n > 0:
        # 가장 오래 걸리는 일의 시간을 찾아냅니다.
        m = max(cnt.keys())
        c = cnt[m]
        # 만약 가장 오래 걸리는 일의 개수가 n보다 작다면 그 일을 1시간씩 합니다.
        if c < n:
            cnt -= Counter({m: c})
            cnt += Counter({m-1: c})
            n -= c
        # 만약 가장 오래 걸리는 일의 개수가 n보다 많다면 그 중 n개의 일만 처리하고 값을 리턴합니다.
        else:
            cnt -= Counter({m: n})
            cnt += Counter({m-1: n})
            return sum(k**2 * v for k, v in cnt.items())
        
            
    return sum(k**2 * v for k, v in cnt.items())

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges