[JavaScript] 프로그래머스 야근 지수 LEVEL3
4872 단어 JavaScript프로그래머스JavaScript
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
배열의 max값을 저장해놓고 while문을 돌면서 max를 하나씩 빼는 것이다.
(while문 안의 for문에서 max값과 같은 work들을 하나씩 빼준다.)
회고
처음에 while문을 돌면서 Max값을 한번씩 찾았는데, 이렇게 하면 시간초과남.
위의 풀이대로 하면 for문 돌면서 여러 개의 max값을 제거할 수 있다!
Author And Source
이 문제에 관하여([JavaScript] 프로그래머스 야근 지수 LEVEL3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@johnyejin/JavaScript-프로그래머스-야근-지수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)