나 개발자 할래요
[JS] 과일 장수 본문
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 price = m * Math.min(...box);
total += price;
} return total;
}
`score.splice(score.length -m, m)`는 배열의 끝에서부터 `m`개의 사과를 추출하여 `box`배열로 만듭니다.
splice`메서드는 원본 배열을 변경하고, 제거된 요소들을 반환합니다.
배열을 `Math.min()`에 직접 전달할 수 없기 때문에,
스프레드 연산자를 사용하여 배열의 요소를 개별 인수로 전달합니다.
다른 사람 풀이
function solution(k, m, score) {
var answer = 0;
// 1) 사과의 점수를 내림차순으로 정렬한다.
score.sort((a, b) => b-a);
// 2) 박스에 담을 수 있는 개수(m)을 사용하여 박스의 개수를 구한다.
let box = Math.floor(score.length / m);
// 3) 박스의 개수 만큼 반복문
for(let i=1; i<=box; i++) {
// 4) (박스에 담긴 최소 값) * m 을 answer에 더한다.
answer += score[m*i-1] * m;
}
return answer;
}
`m * i - 1`은 `i`번째 박스의 최소 점수 위치를 의미합니다.
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;
}
`slice(score.length % m)`은 배열의 길이를 `m`으로 나눈 나머지를 계산하여, 박스에 담기지 않는 사과들의 개수를 의미합니다. 이 부분을 제거하여 유효한 사과만을 추출합니다.
'개발자 되는 법... > 코딩테스트...' 카테고리의 다른 글
[JS] 소수 만들기 (0) | 2024.08.13 |
---|---|
[JS] 모의고사 (0) | 2024.08.12 |
[JS] 카드 뭉치 (0) | 2024.08.08 |
[JS] 2016 (0) | 2024.08.01 |
[JS] 명예의 전당 (0) | 2024.07.31 |