728x90
반응형
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90
👩💻 코드
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;
int solution(int k, vector<int> tangerine){
int answer = 0;
int sum = 0;
unordered_map<int, int> categorized_tangerine;
vector<int> counts;
for(int t : tangerine){
categorized_tangerine[t]++;
}
for (const auto& pair : categorized_tangerine) {
counts.push_back(pair.second);
}
sort(counts.rbegin(), counts.rend());
for(int i=0; i<counts.size(); i++){
if(sum >= k){
return answer;
}
sum += counts[i];
answer++;
}
return answer;
}
📝 풀이
tangerine에서 무게 별로 개수를 분류하여 categorized_tangerine에 저장한다.
귤의 무게 | 개수 |
1 | 1 |
3 | 2 |
2 | 2 |
5 | 2 |
4 | 1 |
서로 다른 종류의 최소값을 구해야하기 때문에 귤의 개수만 필요하다.
개수만 counts에 저장하고 가장 많은 개수의 귤을 사용하기 위해 내림차순으로 정렬한다.
다른 종류의 귤을 추가할 때마다 전체 개수를 추가해주고 목표 개수를 충족하면 answer을 return한다.
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 괄호 회전하기 (0) | 2024.07.24 |
---|---|
[프로그래머스] 연속 부분 수열 합의 개수 (0) | 2024.07.23 |
[프로그래머스] 예상 대진표 (0) | 2024.07.21 |
[프로그래머스] 영어 끝말잇기 (0) | 2024.07.20 |
[프로그래머스] N개의 최소공배수 (0) | 2024.07.19 |