
https://school.programmers.co.kr/learn/courses/30/lessons/135808
function solution(k, m, score) {
// m은 사과의 수
// k는 최대점수
// 반환값은 최소점수 곱하기 사과개수
score = score.sort().reverse();
let s=[];
for (let i = 0; i < score.length; i+=m) {
s.push(score.slice(i, i+m))
}
s = s.filter((a) => a.length === m);
s = s.map(a => Math.min(...a)*m).reduce((a,b) => a+b, 0)
return s;
}
reduce() 함수 이용해 원하는 결과로 도출할 수 있고,
filter() 는 거름망의 역할을 한다. 또한, score의 길이가 1,000,000개까지 될 수 있어서 sort하고 reverse로 두 번 정렬하는 것보다는 score.sort((a, b) => b - a) 로 한 번에 정렬하는 게 더 좋을 것 같다는 코멘트를 받았다. 그리고 score 값에 다시 저장해주지 않아도 sort 함수는 실행하면 그대로 값이 변경된다.