문제
프로그래머스 문제
내 풀이
- while로 루프 돌려서 배열을 제거해가면서 푸니까 시간초과가 나고 for로 원본 배열 훼손 안 하고 푸니까 시간초과가 안 난다.
function solution(k, m, score) {
let result = 0;
score.sort((a,b) => b-a);
for(var i=0; i<score.length; i += m){
if(score.length - i >= m){
let detached = score.slice(i,i+m);
result += detached[detached.length-1] * m;
}
}
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;
}