본문 바로가기
알고리즘

[프로그래머스] 귤 고르기

by limew 2023. 7. 18.

https://school.programmers.co.kr/learn/courses/30/lessons/138476

 

 

 

리턴 값: k개씩 담을때 최소한 종류의 갯수

 

 

첫번째 풀이

function solution(k, tangerine) {
    var answer = 0;
    const obj = {};
    let count = 0;
    
    for (const size of tangerine) {
        obj[size] = (obj[size] || 0) + 1;
    }
    // sort
    const sorted = Object.entries(obj).sort((a, b) => b[1] - a[1]);
    while (count < k) {
        count += sorted.shift()[1];
        answer++;
    }
    return answer;
}

// 1, 22, 33, 4, 55

 

두번째 풀이

object정리할 때 forEach 써보기

function solution(k, tangerine) {
    var answer = 0;
    const obj = {};
    let counts = 0;
    tangerine.forEach(t => obj[t] = (obj[t] || 0)+1);
    const sortedValues = Object.values(obj).sort((a, b) => b - a);
    
    for (const value of sortedValues) {
        if (counts >= k) {
            break;
        }
        counts += value;
        answer++;
    }
    return answer;
}