728x90
😀 아이디어
1. 1시간이 지날 때마다 모든 경우의 수를 구하는 것은 시간복잡도 초과 예상
2. 야근할 양이 가장 많은 업무부터 소거해야한다. 남은 업무가 제곱되어 계산되기 때문.
3. 배열을 내림차순으로 정렬하고, 가장 높은 값을 기준으로 n의 값을 하향
4. n == 0이 될 때 while문을 빠져나오고 works 배열 내 값으로 야근지수 계산
def solution(n, works):
works.sort(reverse = True)
maxIndex = len(works)
while (n > 0):
max = works[0]
works[0] = works[0] - 1
n = n - 1
if n == 0:
break
for i in range(1, maxIndex):
next = works[i]
if max > next:
break
else:
works[i] = works[i] - 1
n = n - 1
if n == 0:
break
answer = 0
if works[0] <= -1:
return answer
for work in works:
answer += work**2
return answer