프로그래머스 Lv.2 귤고르기

Kim Jason·2023년 4월 4일
0

알고리즘 노트

목록 보기
31/35
post-thumbnail

💁🏻 코드

function solution(k, tangerine) {
    // ✅ { 귤의 크기: 해당 크기 귤의 개수 }
    let info = {};
    tangerine.forEach(el => info[el] = (info[el] || 0) + 1);
    const arr = Object.entries(info).sort((a, b) => b[1] - a[1]);
    // ✅ std(귤 개수를 저장하는 임시 변수), answer(최소 귤 종류 개수)
    let [std, answer] = [0, 0];
    for (let i = 0; i < arr.length; i++) {
        std += arr[i][1];
        if (std < k) {
            // ✅ 포장한 귤의 개수 < k 인 경우) 귤 종류를 하나 늘린다
            answer += 1;
        } else {
            // ✅ 포장한 귤의 개수 >= k 인 경우) 귤 종류를 하나 늘리고 리턴한다
            return answer + 1;
        }
    }
}

입력값의 제한은 다음과 같다.

  • 1 <= 귤의 크기를 담은 배열 tangerine <= 100,000

배열 tangerine에 대한 이중 for문의 사용은 피해야 겠다고 생각했다.

profile
성장지향형 프론트엔드 개발자

0개의 댓글