[문제]
코딩테스트 연습 - 귤 고르기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 풀이]
가장 많이 나온 종류의 귤부터 골랐을 때 k 숫자가 되기까지 총 몇종류의 귤을 고르는지 파악하는 문제이다.
map과 같은 딕셔너리를 사용하면 쉽게 풀 수가 있다.
[회고]
.
[코드]
#include <string>
#include <vector>
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int solution(int k, vector<int> tangerine) {
int answer = 0;
map<int,int> mp;
for(int i = 0;i<tangerine.size();i++){
mp[tangerine[i]]++;
}
vector<pair<int, int> > arr;
for(auto iter = mp.begin(); iter != mp.end(); iter++){
arr.push_back(make_pair(iter->second,iter->first));
}
sort(arr.begin(),arr.end(), greater<>());
int total = k;
for(int i = 0; i<arr.size();i++){
total -= arr[i].first;
answer++;
if(total <= 0){
break;
}
}
return answer;
}