[JavaScript]プログラマー残業指数LEVEL 3
4821 ワード
問題のソース
ポイントは、最初の
(whileは、文のfor文で最大値と同じ作業を1つずつ削除します.)
振り返る
最初にwhileゲートを回した時にMax値を探したらタイムアウト
以上の説明に従って、for文を迂回して複数のmax値を削除できます!
function solution(n, works) {
const copyWorks = [...works].sort((a, b) => b - a);
let max = copyWorks[0];
while (n > 0) {
for (let i=0; i<copyWorks.length; i++) {
if (max === copyWorks[i]) {
copyWorks[i] -= copyWorks[i] > 0 ? 1 : 0;
n--;
}
if (!n) break;
}
max--;
if (!max) break;
}
return copyWorks.reduce((acc, cur) => acc + Math.pow(cur, 2), 0);
}
に答えるポイントは、最初の
works
配列の最大値を格納し、ドアの周りに最大値を順次減算する.(whileは、文のfor文で最大値と同じ作業を1つずつ削除します.)
振り返る
最初にwhileゲートを回した時にMax値を探したらタイムアウト
以上の説明に従って、for文を迂回して複数のmax値を削除できます!
Reference
この問題について([JavaScript]プログラマー残業指数LEVEL 3), 我々は、より多くの情報をここで見つけました https://velog.io/@johnyejin/JavaScript-프로그래머스-야근-지수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol