문제:

회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겂니다. Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요.

풀이 방법:

야근 지수를 최소화하려면 일정 값들을 0으로 바꾸는 것보다 각 원소들을 가능한 작게 만드는 것이 더 도움이 된다. 즉 n만큼의 수를 감소시키는 것을 몇 개의 값들에 집중해서 하는 것이 아니라 골고루 사용해야 하는 것이다. 따라서 n번 works의 최댓값을 1씩 빼주는 작업을 하면 된다.

1
2
3
4
5
6
7
8
9
10
def solution(n, works):
    answer = 0
    if n > sum(works):
        return answer
    for i in range(n):
        works.sort()
        works[-1]-=1
    for i in works:
        answer+=i*i
    return answer
cs


+ Recent posts