https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=cpp
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <bits/stdc++.h>
using namespace std;
bool cmp(std::pair<int, int> lhs, std::pair<int, int> rhs)
{
return lhs.second > rhs.second;
}
int solution(int k, vector<int> tangerine)
{
int answer = 0;
// 1. 귤의 크기별로 몇개 있는지 확인
std::unordered_map<int, int> sizeCountMap;
for (int i = 0; i < tangerine.size(); ++i)
{
sizeCountMap[tangerine[i]]++;
}
// 2. 갯수가 적은 순서대로 배열 후 목표 갯수 만큼 제거
std::vector<std::pair<int, int>> result;
result.reserve(sizeCountMap.size());
for (auto ele : sizeCountMap)
{
result.push_back(std::make_pair(ele.first, ele.second));
}
std::sort(result.begin(), result.end(), cmp);
// 3. 갯수가 0이되면 항목 제거
int iter = tangerine.size() - k;
while(true)
{
if (iter == 0)
{
break;
}
--iter;
--result[result.size() - 1].second;
if (result[result.size() - 1].second == 0)
{
result.pop_back();
}
}
// 4. 종류 리턴
answer = result.size();
return answer;
}
'프로그래머스 문제풀이 > LEVEL 2' 카테고리의 다른 글
[C++] 프로그래머스 문제풀이 LEVEL 2 연속 부분 수열 합의 개수 (0) | 2023.07.03 |
---|---|
[C++] 프로그래머스 문제풀이 LEVEL 2 괄호 회전하기 (0) | 2023.07.03 |
[C++] 프로그래머스 문제풀이 LEVEL 2 멀리 뛰기 (0) | 2023.07.03 |
[C++] 프로그래머스 문제풀이 LEVEL 2 N개의 최소공배수 (0) | 2023.07.03 |
[C++] 프로그래머스 문제풀이 LEVEL 2 점프와 순간 이동 (0) | 2023.07.03 |