[알고리즘/C++] 프로그래머스 - 귤 고르기 (Lv.2)

0시0분·2024년 5월 17일
0

알고리즘

목록 보기
7/23

✏️ 풀이 방법
<무게, 개수> 형태로 map에 귤 정보를 저장하고,
개수가 많은 순서대로 정렬한다.
k개만큼 골라낸 후 가지수만 세어주면 된다.

static bool comp(pair<int, int> &a, pair<int, int> &b)
{
    return a.second > b.second;
}

int solution(int k, vector<int> tangerine)
{
    int answer = 0;

    map<int, int> m_sizes;
    for (int i = 0; i < tangerine.size(); ++i)
    {
        m_sizes[tangerine[i]]++;
    }
    vector<pair<int, int>> v_sizes(m_sizes.begin(), m_sizes.end());
    sort(v_sizes.begin(), v_sizes.end(), comp);

    for (int i = 0; i < v_sizes.size(); ++i)
    {
        k -= v_sizes[i].second;
        answer++;

        if (k <= 0)  break;
    }

    return answer;
}

0개의 댓글