function solution(k, m, score) {
if(score.length < m){
return 0;
}
score.sort((a, b) => a - b);
let total = 0;
while(score.length >= m){
const box = score.splice(score.length - m, m);
const prize = m * Math.min(...box);
total += prize;
}
return total;
}
원리는 간단하다. 오름차순 정렬을 한 뒤에 가장 뒤에서부터 m
개씩 한 박스를 만든다.
그러면 가장 비싼 과일부터 포장이 되어가기 때문에 최대의 이익을 낼 수 있다.
function solution(k, m, score) {
if(score.length < m){
return 0;
}
score.sort((a, b) => a - b);
let total = 0;
while(score.length >= m){
const box = score.splice(score.length - m, m);
const prize = m * box[0];
total += prize;
}
return total;
}
오름차순 정렬이 되어있다는 점을 활용해서
Math.min()
을 사용하지않고 인덱스를 사용하는 것도 가능하다.
다만, 유의미한 효과는 없었다.