function solution(n, works) {
let max = works.sort((a,b) => b-a)[0];
outer: while(n) {
if (!max) return 0;
for (let i = 0; i < works.length; i++) {
if (max === works[i]) {
works[i] -= 1;
n--;
continue outer;
}
}
max--;
}
return works.reduce((acc,e) => acc + e ** 2, 0)
}
Math.max로 최대값을 찾아 줄여나가는 방법은 효율성이 떨어진다. 내림차순으로 정렬한 뒤 탐색하여 제거해 나가는 방법으로 테스트 통과.