26. 야근 지수 ( Level 3 )

JavaScript logo

야근 지수 ( Level 3 )

문제

야근 지수
회사원인 수민이는 많은 일이 쌓여 있습니다.
수민이는 야근을 최소화하기 위해 남은 일의 작업량을 숫자로 메기고,
일에 대한 야근 지수를 줄이기로 결정했습니다.
야근 지수는 남은 일의 작업량을 제곱하여 더한 값을 의미합니다.
수민이는 1시간 동안 남은 일 중 하나를 골라 작업량 1만큼 처리할 수 있습니다.
수민이의 퇴근까지 남은 N 시간과 각 일에 대한 작업량이 있을 때,
noOvertime 함수를 제작하여 수민이의 야근 지수를 최소화 한 결과를 출력해 주세요.
예를 들어, N=4 일 때, 남은 일의 작업량이 [4, 3, 3] 이라면 야근 지수를 최소화하기 위해 일을 한 결과는 [2, 2, 2]가 되고 야근 지수는 22 + 22 + 22 = 12가 되어 12를 반환해 줍니다.

나의 풀이

1
2
3
4
5
6
7
8
const noOvertime = (no, works) => {
while ( no > 0 ) {
works.sort((a,b) => b-a);
works[0] -= 1;
no--;
}
return works.map(a => a*a).reduce((a,b) => a+b);
}

works 중 가장 큰 시간중 1을 빼고 다시 정렬하는 방법으로 접근

더 좋은 방법이 있을 것 같긴함

마무리

개인적으로 공부한 내용을 정리한 것이기 때문에 반말을 사용한 점 양해 부탁드립니다.
잘못된 부분이나 피드백이 있으시다면, 댓글에 남겨주시면 감사하겠습니다!

공유하기