알고리즘

[알고리즘] 프로그래머스 Lv.1 - 과일 장수(JS)

로돌씨 2024. 4. 16. 17:20

문제 출처-https://school.programmers.co.kr/learn/courses/30/lessons/135808

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

 

문제풀이

function solution(k, m, score) {
    var answer = 0;
    var appleBox = [];
    
    // 내림차순 정렬
    score.sort((a,b) => b-a);    
    
    // box를 빈배열로 선언
    // box에 사과를 넣음 , 사과를 넣으면서 만약 사과의 갯수가 한상자에 들어갈수있는 최대의 수라면 box를 appleBox에 추가
    // 다시 box는 빈배열로 선언
    for(let i = 0 , box = [] ; i<score.length; i ++){
        box.push(score[i])
        if((i + 1) % m === 0){
            appleBox.push(box);
            box = [];
        }
    }
    //그렇게 만들어진 appleBox는 반복문을통해
    //사과박스에 들어있는 사과의 점수중 가장 낮은숫자와 m을 곱해서 사과박스의 점수를 매기고 모두 합산하여 값을 리턴함
    for(let i = 0; i < appleBox.length; i++){
        answer += Math.min(...appleBox[i]) * m ;
    }
    return answer;
}

 

반복문의 선언부에 box = [] 이렇게 선언할 수 있다는것을 처음알았다... 굉장히 풀이가 깔끔했고 또 보기도 쉬웠다.

점점 문제가 어려워 지는것이 느껴지고 혼자힘으로 풀 수 없는 문제들이 많아진다 ㅠㅠㅜ 그래도 포기 않고 열심히  빠이티이잉