문제
내가 푼 것
function solution(k, m, score) {
score.sort((a,b) => b - a)
score = score.slice(0, score.length - (score.length % m))
let result = 0;
let arr = [];
let min = 0;
score.forEach((item, index) => {
arr.push(item);
if(arr.length === m) {
min = Math.min(...arr);
result = result + min * m
arr = [];
min = 0;
}
})
return result
}
다른 사람들이 푼 것
function solution(k, m, score) {
let answer = 0;
const sortedScore = score.slice().sort((a, b) => a - b).slice(score.length % m);
for (let i = 0; i < sortedScore.length; i += m) {
answer += sortedScore[i] * m;
}
return answer;
}
다른 사람이 푼 것을 보면 score를 복사해서 오름차순으로 ㅈ어렬 후, 나머지 부분을 앞에서부터 잘랐다. 즉, 최소값들 중 m과 필요 없는 부분을 자른 것.
그래서 for문으로 돌면서 i를 m만큼 넘기면서 answer에 더한다.
이 말은 뭐냐하면 m 만큼씩 박스를 만들어야 하니 최소값부터 m 만큼씩 가면서 곱해주면 박스에서 가장 작은 숫자를 어차피 곱해서 더하는 것이다.
찰지다..