말랑한 하루
[Programmers] 야근 지수 (Lv 3, JavaScript) 본문
반응형
[ 학습 내용 ]
문제 내용을 이해하지 못해 풀이를 참조했던 문제이다.
첫 접근을 입출력 예#1만을 참조하여
아! 해당 작업량의 제곱근을 구해, 가장 가까운 큰 제곱근의 제곱값을 구하면 되는구나!
라고 생각하여 해멨다.
피로도는 제곱되므로 야근의 피로도를 최소로하기 위해선, 전체 작업을 하향평준화 해야한다.
작업량의 최대값을 Demi가 일할 수 있는 양만큼 1씩 빼주며 순환진행하면 전체적인 하향평준화가 된다.
[ 소스 코드 ]
function solution(n, works) {
if (works.reduce((acc, cur) => acc + cur, 0) <= n) return 0;
works.sort((o1, o2) => o2 - o1);
while(n) {
let max = works[0];
for(let i=0; i<works.length; i++) {
while(works[i] >= max) {
works[i]--;
n--;
}
if (!n) break;
}
}
return works.reduce((acc, cur) => acc + Math.pow(cur, 2), 0);
}
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Programmers] 최고의 집합 (Lv 3, JavaScript) (0) | 2022.12.09 |
---|---|
[Programmers] 단어 변환 (Lv 3, JavaScript) (0) | 2022.12.09 |
[Programmers] 기지국 설치 (Lv 3, JavaScript) (0) | 2022.12.08 |
[Programmers] 이중우선순위큐(Lv 3, JavaScript) (0) | 2022.12.05 |
[Programmers] 문자열 내림차순으로 배치하기 (Lv 1, JavaScript) (0) | 2022.12.05 |
Comments