C++/programmers 코딩테스트(level 2) C++

[C/C++] programmers Level 2 귤 고르기

CE : 하랑 2023. 10. 10. 21:39

 

 

 

코드

 

#include <vector>
#include <algorithm> // sort()
#include <unordered_map> // 해시

using namespace std;

int solution(int k, vector<int> tangerine) {
    int answer = 0;
    unordered_map<int, int> hashmap;
    vector<int> count;
    
    for(int i=0;i<tangerine.size();i++)
    {
        hashmap[tangerine[i]]++; // 크기 별 개수 체크
    }
    
    for(auto n:hashmap){
        count.push_back(n.second); // 크기 별 개수 값 count에 정리
    }
    
    sort(count.begin(), count.end(), greater<int>()); // greater<int>() : [start,end) 범위의 인자를 내림차순으로 정렬해 준다. -> 큰 크기 부터 비교하기 위함
    int check=0;
    
    for(int i=0;i<count.size();i++){
        
        if(check>=k){ // 귤 담은 개수가 k보다 크거나 같을 때 반복문 탈출
            break;
        }
        
        answer++; // 크기별 귤 개수 체크
        check=check+count[i]; // 총 귤 개수 체크
    }
    
    return answer;
}