2단계 : 귤 고르기

차차·2023년 1월 28일
post-thumbnail
function solution(k, tangerine) {
    let sizes = {};
    for(let i=0; i<tangerine.length; i++){
        sizes[tangerine[i]] = sizes[tangerine[i]]+1 || 1
    }
    const sizesArr = Object.entries(sizes).sort((a,b) => a[1] - b[1]);
    let cnt = 0;
    while(k>0){
        k = k - sizesArr[sizesArr.length-1][1];
        cnt++;
        sizesArr.pop();
    }
    return cnt++;
}

설명

  1. 귤의 무게를 담은 배열 tangerine을 반복문을 돌려 각 무게당 몇 개가 있는지 sizes 객체에 전달한다.
  2. sizes를 Object.entries와 sort를 통해 개수 순으로 오름차 순 정렬을 한 배열 sizeArr을 생성한다.
  3. 한 상자에 담으려는 귤의 개수 k가 0이하가 될 때까지 뒤에서부터 (귤의 개수가 많은 순으로) k - 무게별 개수를 실행하고 cnt의 값을 1씩 추가, 그리고 반복문이 끝나기 전 배열의 맨 마지막 요소를 삭제한다.
  4. 이렇게하면 귤의 무게가 서로 다른 종류의 수의 최솟값을 리턴한다.
profile
나는야 프린이

0개의 댓글