Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

나 개발자 할래요

[JS] 과일 장수 본문

개발자 되는 법.../코딩테스트...

[JS] 과일 장수

개발_자 2024. 8. 9. 09:57

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