기록공간

폰켓몬 (프로그래머스) 본문

Algorithm/문제

폰켓몬 (프로그래머스)

입코딩 2020. 7. 3. 17:24
반응형

문제가 길어보여 어려워 보이지만, 생각보다 간단한 문제였다.

 

N마리의 폰켓몬 중 절반만큼 선택하는데, 폰켓몬이 가장 많은 종류부터 한 마리씩 선택하여 몇 종류의 폰켓몬을 선택 할 수 있는지 출력하는 문제이다.

 

여기서 핵심은 폰켓몬의 종류이다. 답 부터가 몇가지 종류를 선택 할 수 있는지를 물어보기 때문이다.

 

종류가 N / 2개 보다 많은 경우 종류별로 한마리씩 골라도 N / 2개를 넘어가므로, 최대로 고를 수 있는 종류 N / 2를 답으로 출력하면 된다.

 

만약 종류가 N / 2개 보다 적은 경우 종류별로 한마리씩 골라도 남은 갯수 만큼은 똑같은 종류에서 골라야 하므로, 폰켓몬 종류 수만큼 출력하면 된다.

 

코드는 다음과 같다.

 

#include <vector>
#include <unordered_map>
using namespace std;

int solution(vector<int> nums)
{
	int answer = 0;
	unordered_map<int, int> um; // 몇 종류가 있는지 알아보기 위함
	for (const auto iter : nums) um[iter]++;
	int count = nums.size() / 2; // 고를 수 있는 수
	return um.size() >= count ? count : um.size();
}
반응형

'Algorithm > 문제' 카테고리의 다른 글

MissingInteger (Codility)  (0) 2020.07.13
BinaryGap (Codility)  (0) 2020.07.13
등굣길 (프로그래머스)  (0) 2020.07.01
타겟넘버 (프로그래머스)  (0) 2020.07.01
강의실 배정 (백준)  (0) 2020.06.22
Comments