콘솔창 & 윈도우창/코딩 테스트

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

뽀또치즈맛 2024. 11. 15. 00:37

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

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 
내가 통과한 코드

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

    vector<int> box(10000001);

    for (int i : tangerine) {
        box[i]++;
    }

    sort(box.rbegin(), box.rend());

    for (int i = 0; i < box.size(); i++) {
        if (box[i] < k) {
            answer++;
            k -= box[i];
        }
        else {
            answer++;
            break;
        }
    }
    

    return answer;
}

 
 
가장 효율적이게 보이던 코드

#include <bits/stdc++.h>

using namespace std;

int solution(int k, vector<int> tangerine) {
    int answer = 0;
    int m = *max_element(tangerine.begin(), tangerine.end());
    vector<int> v(m, 0);
    for(auto& t : tangerine){
        v[t - 1]++;
    }
    stable_sort(v.rbegin(), v.rend());
    for(int i = 0 ; i < v.size() ; i++){
        answer++;
        k -= v[i];
        if(k <= 0) return answer;
    }
    return answer;
}