[프로그래머스 | Javascript] 과일 장수

박기영·2022년 11월 27일
0

프로그래머스

목록 보기
100/126

solution

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 prize = m * Math.min(...box);
        
        total += prize;
    }
    
    return total;
}

원리는 간단하다. 오름차순 정렬을 한 뒤에 가장 뒤에서부터 m개씩 한 박스를 만든다.
그러면 가장 비싼 과일부터 포장이 되어가기 때문에 최대의 이익을 낼 수 있다.

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 prize = m * box[0];
        
        total += prize;
    }
    
    return total;
}

오름차순 정렬이 되어있다는 점을 활용해서
Math.min()을 사용하지않고 인덱스를 사용하는 것도 가능하다.
다만, 유의미한 효과는 없었다.

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글