문제풀이:
배열안 사과들을 점수가 높은 순으로 나열한 후 m개씩 나누어 상자에 담는다.
나누어진 사과 수들 제일작은 것 x m (개) = 한상자의 가격
모든상자의 가격을 answer에 더해준다.
따라서 실행해봤는데 5개 테스트 케이스에서 오류가 남.
런타임 에러 코드 :
function solution(k, m, score) {
var answer = 0;
score.sort((a,b)=>b-a);
const n = Math.floor(score.length/m);
for (let i=0; i<n; i++){
let a = score.splice(0,3);
answer += Math.min(...a)*m;
}
return answer;
}
해결한 코드:
function solution(k, m, score) {
var answer = 0;
score.sort((a, b) => b - a);
const n = Math.floor(score.length / m);
for (let i = m - 1; i < score.length; i += m) {
answer += score[i] * m;
}
return answer;
}
//console.log(solution(3, 4, [1, 2, 3, 1, 2, 3, 1]));
//console.log(solution(4, 3, [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2]));
해결방법 : 굳이 배열을 잘라서 새로운 배열을 안만들어도
한 상자의 마지막 인덱스값을 안다면 답을 구할 수 있다.
'코딩테스트 문제풀기' 카테고리의 다른 글
[프로그래머스] 푸드파이터대회 lev1. (javascript) (2) | 2023.10.02 |
---|---|
[프로그래머스] 추억점수 lev1. (javascript) (0) | 2023.10.02 |
[프로그래머스] 등차수열의 특정한 항만 더하기 lev0. (javascript) (0) | 2023.05.23 |
[프로그래머스] 배열의 길이에 따라 다른 연산하기 lev0. (javascript) (0) | 2023.05.22 |
[프로그래머스] A로 B 만들 lev0. (javascript) (0) | 2023.05.22 |