귤 고르기(12분)

myeongrangcoding·2023년 11월 20일

프로그래머스

목록 보기
63/65

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

구현 아이디어 3분 구현 9분

풀이

  1. tangerine을 돌며 map에 귤의 크기와 개수를 넣어준다.
  2. vector에 개수만 넣고 정렬한다.
  3. 담아야 할 귤의 개수만큼 꺼낸다. sum이 k(담아야 할 귤 개수)와 같거나 클 때 for문을 종료한다.
  4. i가 0부터니 +1을 한 값이 answer가 된다.
#include <string>
#include <vector>
#include <map>
#include <algorithm>

using namespace std;

int solution(int k, vector<int> tangerine) {
    int answer = 0;
    int N = tangerine.size();
    
    map<int, int> data;
    for(int i = 0; i < N; ++i) data[tangerine[i]]++;
    
    vector<int> result;
    for(auto it : data)
        result.push_back(it.second);
    
    sort(result.begin(), result.end(), greater());
    
    //for(auto it : result)
        //printf("%d ", it);
    
    int sum = 0;
    for(int i = 0; i < result.size(); ++i)
    {
        sum += result[i];
        if(sum >= k) 
        {
            answer = i + 1;
            break;
        }
    }
    
    return answer;
}
profile
명랑코딩!

0개의 댓글