728x90

1. ๋ฌธ์ œ ์š”์•ฝ

k ๊ฐœ๋ฅผ ๊ณจ๋ผ ์ƒ์ž ํ•˜๋‚˜์— ๋‹ด์•„ ํŒ๋งค
๊ทค์„ ํฌ๊ธฐ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ–ˆ์„ ๋•Œ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‹ถ์Œ


์ฒ˜์Œ์—๋Š” ๋ฌธ์ œ๊ฐ€ ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ ๊ฒฐ๊ตญ ๊ฐ™์€ ํฌ๊ธฐ์˜ ๊ทค์„ ๋ชจ์•„์„œ ์ตœ๋Œ€ํ•œ ํŒ๋งคํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค

 

 

2. ์ฝ”๋“œ

#include <string>
#include <vector>
#include <algorithm>

using namespace std;


bool cmp(const pair<int,int>& lValue,const pair<int,int>& rValue){
    return lValue.second>rValue.second;
}

int solution(int k, vector<int> tangerine) {
    int answer = 0;
    
    vector<pair<int,int>> tangerinePair;
    
    sort(tangerine.begin(),tangerine.end());
    
    /*for(int i=0;i<tangerine.size();i++){
        printf("%d ",tangerine[i]);
    }
    printf("\n");*/
    
    int prev = tangerine[0];
    tangerinePair.push_back(make_pair(tangerine[0],0));
    for(int i=0;i<tangerine.size();i++){
        //printf("%d ",tangerine[i]);
        if(prev==tangerine[i]){
            tangerinePair[tangerinePair.size()-1].second++;
        }
        else{
            tangerinePair.push_back(make_pair(tangerine[i],1));
            prev=tangerine[i];
        }
    }
    //printf("\n");
    
    sort(tangerinePair.begin(),tangerinePair.end(),cmp);
    
    int count=0;
    for(int i=0;i<tangerinePair.size();i++){
        //printf("%d %d\n",tangerinePair[i].first,tangerinePair[i].second);
        if(count>=k) break;
        count+=tangerinePair[i].second;
        answer++;
    }
    
    
    return answer;
}

 

 

 

3. ํ•ด์„ค

๋จผ์ € vector<int> tangerine ๋ฒกํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค

์ •๋ ฌํ•œ ๋‹ค์Œ  vector<pair<int,int>> tangerinePair์— <๊ทค์˜ํฌ๊ธฐ,๊ฐฏ์ˆ˜>๋ฅผ ๋‹ด์•˜๋‹ค

int prev = tangerine[0];
tangerinePair.push_back(make_pair(tangerine[0],0));

for(int i=0;i<tangerine.size();i++){
    if(prev==tangerine[i]){
        tangerinePair[tangerinePair.size()-1].second++;
    }
    else{
        tangerinePair.push_back(make_pair(tangerine[i],1));
        prev=tangerine[i];
    }
}

 

๊ทธ ํ›„, ๊ทค์˜ ๊ฐฏ์ˆ˜์— ๋”ฐ๋ผ vector<pair<int,int> tangerinePiar๋ฅผ ์ •๋ ฌํ•ด์ฃผ์—ˆ๋‹ค

sort(tangerinePair.begin(),tangerinePair.end(),cmp);
bool cmp(const pair<int,int>& lValue,const pair<int,int>& rValue){
    return lValue.second>rValue.second;
}

 

๊ทธ๋ฆฌ๊ณ  for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์ค‘๋ณต๋˜๋Š” ๊ฐฏ์ˆ˜๋“ค์„ k์™€ ๋น„๊ตํ•˜์—ฌ ๋”ํ•ด์ค˜์„œ ์ˆ˜๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด breakํ•˜๋„๋ก ์ œ์ž‘ํ•˜์—ฌ์ฃผ์—ˆ๋‹ค

int count=0;
for(int i=0;i<tangerinePair.size();i++){
    if(count>=k) break;
    count+=tangerinePair[i].second;
    answer++;
}

 

 

 

 

 

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•

+ Recent posts