알고리즘문제

프로그래머스 > 과일 장수(JS)

단점이없어지고싶은개발자 2022. 12. 1. 19:36
반응형

 

  1. score라는 과일을 모아놓고, m 사과 상자를 만들어 판매했을 때, 최대이익을 얻을 수 있도록 반환해야 한다.
  2. 상자에서 가장 값싼 값의 사과를 m 만큼 곱해서 과일 장수가 얻을 수 있는 최대 이익을 반환해야 한다.
  3. 여기서 k의 역할은 그렇게 중요하지 않아 보인다. 왜냐면 값싼 사과를 순서대로 사과박스에 담고, m의 사이즈보다 작다면 이전까지 만든 사과박스를 반환하고, 그렇지 않다면, 해당 박스에 최하위의 사과를 m만큼 곱해서 반환하면 되기 때문에, k를 활용하지 못했다.
function solution(k, m, score) {
    let count = 0;
    const expensiveAppleSort = score.sort((a, b) => b - a);
    let secondSlice = m;
    let firstSlice = 0;
    
    while (true) {
        let appleBox = expensiveAppleSort.slice(firstSlice, secondSlice);
        
        if (appleBox.length !== m) {
            return count;
        }
        
        count += Math.min(...appleBox) * m;
        firstSlice = secondSlice;
        secondSlice += m;
    }
}
반응형