Programmers 과일 장수

홍왕열·2023년 5월 18일
0

문제

내가 푼 것

function solution(k, m, score) {
    score.sort((a,b) => b - a)
    score = score.slice(0, score.length - (score.length % m))
    let result = 0;
        let arr = [];
        let min = 0;
  
    score.forEach((item, index) => {
        arr.push(item);
        if(arr.length === m) {
            min = Math.min(...arr);
            result = result + min * m
            arr = [];
            min = 0;
        }

    })
    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;
}

다른 사람이 푼 것을 보면 score를 복사해서 오름차순으로 ㅈ어렬 후, 나머지 부분을 앞에서부터 잘랐다. 즉, 최소값들 중 m과 필요 없는 부분을 자른 것.

그래서 for문으로 돌면서 i를 m만큼 넘기면서 answer에 더한다.
이 말은 뭐냐하면 m 만큼씩 박스를 만들어야 하니 최소값부터 m 만큼씩 가면서 곱해주면 박스에서 가장 작은 숫자를 어차피 곱해서 더하는 것이다.

찰지다..

profile
코딩 일기장

0개의 댓글