문제 설명 및 제한사항
아이디어 및 해결 방법
코드
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())
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges