프로그래머스 코딩테스트 연습 - 귤 고르기 JavaScript

function solution(k, tangerine) {
    const weight = {}
    tangerine.forEach(el => {
        if(!weight[el]) {
            weight[el] = 1;
        }else {
            weight[el] += 1;
        }
    });
    const sorted = Object
        .values(weight)
        .sort((a, b) => b - a);
    let answer = 0;
    for(let i = 0; i < sorted.length; i++) {
        k -= sorted[i];
        answer++;
        if(k <= 0) {
            break;
        }
    }
    return answer;
}
  • 객체로 각 귤들의 무게에 따른 갯수를 세었다.
  • 같은 무게의 귤들이 많은 것 부터 상자에 넣고 만약 상자가 가득 차거나 넘치면 그때 귤을 그만 넣는다고 생각하였다.
  • 이때, 가장 수가 많은 무게의 귤부터 상자에 넣었기에 자연스럽게 상자에 들어간 귤의 크기는 유사한 것들이 많아지게 된다.