残業指数

3666 ワード

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で最大値を探す方法は効率が低い.降順にソートし、ナビゲートして削除する方法をテストします.