def solution(n, works):
works.sort(reverse=True) #[12,14,10,5,9]
while True:
if n<=0 or list(set(works))==[0]:
break
if len(set(works))==1: #[3,3,3] n=3 [1,1] n=3
nn = n//len(works) #1만 제거할 수 있다.
if len(works) <= n and works[0]-nn >= 0: #3-1>=0
n -= len(works)*nn
works = [works[0]-nn]*len(works)
elif len(works)<=n and works[0]-nn < 0: #[]
n -= len(works)*works[0]
return 0
else:
for i in range(n):
works[i] -= 1
n -= 1
break
else: #2개 이상 [14,12,10,9,5] 8
set_w = list(set(works))
set_w.sort(reverse=True)
s1 = set_w[0] ; s2 = set_w[1] #12 12 10 (6)/ 10 10 10 9 (2)
w = works.count(s1) #2
if (s1-s2)*w < n:
n -= (s1-s2)*w #4
for i in range(len(works)):
if works[i] == s1:
works[i] = s2
else:
for _ in range(w):
for i in range(len(works)):
if n==0:
break
if works[i]==s1:
works[i] -= 1
n -= 1
s1 -= 1
if n<=0 or list(set(works))==[0]:
break
works.sort(reverse=True)
works = [w**2 for w in works]
answer = sum(works)
return answer
개그튼거.. 테스트 11번 문제 덕분에 ^^ㅎ 엄청 오래 걸렸다..
그리고 이 예제는 어떻게 찾은건지는 모르겠지만 10, [10, 10, 1] , 51 이 예제를 해결할 수 있으면 11번 테스트 문제도 통과된다.