[프로그래머스 C++] 귤 고르기
[프로그래머스 C++] 귤 고르기
https://school.programmers.co.kr/learn/courses/30/lessons/138476
해결전략
맵 Map
정렬
코드
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
bool Compare(pair<int,int>& a, pair<int,int>& b)
return a.second > b.second;
int solution(int k, vector<int> tangerine) {
int answer = 0;
map<int, int> myMap;
//myMap의 key에 주어진 배열의 숫자, value에 0 값으로 등록
for (const auto& i : tangerine)
myMap[i] = 0;
//주어진 숫자가 중복인 경우 카운팅하여 myMap의 value를 업데이트
for (const auto& i : tangerine)
myMap[i]++;
//배열을 생성하여 myMap의 key와 value값을 pair<int,int>로 넣어준다.
vector<pair<int, int>> v;
for (auto it = myMap.begin(); it != myMap.end(); it++)
v.push_back({it->first, it->second});
//value값이 많은(=중복된 숫자가 많은) 순서로 정렬한다.
sort(v.begin(), v.end(), Compare);
//k에서 중복된 숫자가 많은 것들부터 차례대로 빼준다.
//뺀 숫자를 카운팅한다. answer++
//k가 0이하가 되면 for문을 끝낸다.
for(int i=0; i<v.size(); i++)
{
if (k > 0) {
k -= v[i].second;
answer++;
}
else
break;
}
return answer;
}
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 호텔 대실 (0) | 2023.09.06 |
---|---|
[프로그래머스 C++] 연속 부분 수열 합의 개수 (0) | 2023.09.05 |
[프로그래머스 C++] 멀리 뛰기 (0) | 2023.08.30 |
[프로그래머스 C++] 예상 대진표 (0) | 2023.08.28 |
[프로그래머스 C++] N개의 최소공배수 (0) | 2023.08.27 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 호텔 대실
[프로그래머스 C++] 호텔 대실
2023.09.06 -
[프로그래머스 C++] 연속 부분 수열 합의 개수
[프로그래머스 C++] 연속 부분 수열 합의 개수
2023.09.05 -
[프로그래머스 C++] 멀리 뛰기
[프로그래머스 C++] 멀리 뛰기
2023.08.30 -
[프로그래머스 C++] 예상 대진표
[프로그래머스 C++] 예상 대진표
2023.08.28