Algorithm/Programmers(c++)
[c++][프로그래머스] 폰켓몬
kim-hasa
2021. 7. 30. 12:55
https://programmers.co.kr/learn/courses/30/lessons/1845
코딩테스트 연습 - 폰켓몬
당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.
programmers.co.kr
가장 먼저 벡터를 정렬합니다. 그 이후에 종류가 다르면 가져갈 수 있는 숫자를 증가시키고 같으면 넘어갑니다.
만약 최대로 가져갈 수 있는 종류 수보다 커지면 최대 수를 리턴합니다.
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> nums)
{
int answer = 0;
int count = nums.size() / 2; // 최대 가져갈 수 있는 종류
int ponketmon = 0; // 종류의 번호
sort(nums.begin(), nums.end()); // 정렬
ponketmon = nums[0];
answer++; // 초기값 저장
for(int i=1; i < nums.size(); i++)
{
if(nums[i] != ponketmon) // 종류가 다르면 증가
{
ponketmon = nums[i];
answer++;
if(answer >= count) // 가져갈수 있는 것보다 크면
{
return count; // 최대값 리턴
}
}
}
return answer;
}
※ 코드가 지저분 할 수 있습니다.