오늘 풀어볼 문제는...
https://school.programmers.co.kr/learn/courses/30/lessons/1845
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
N마리의 포켓몬이 주어진다. 플레이어는 주어진 N마리의 폰켓몬 중 최대 N/2마리의 폰켓몬을 고를 수 있다. 이 경우에, 고를 수 있는 폰켓몬-종류의 최댓값을 구하라.
풀이
1. 일단, 고를 수 있는 폰켓몬-종류의 최댓값을 구한다.
--> 폰켓몬 배열 속의 모든 원소들을 set에 넣고, 그 set의 size를 통해 구한다.
2. 만일 "고를 수 있는 폰켓몬-종류의 최댓값(set.size)"이 "고를 수 있는 폰켓몬의 수(N/2)"보다 많다면 N/2를 return한다. 그렇지 않다면 그대로 return한다.
코드
#include <vector>
#include <set>
using namespace std;
int solution(vector<int> nums)
{
set<int> s;
for (int i = 0; i < nums.size(); i++)
s.insert(nums[i]);
if (s.size() > nums.size() / 2)
return nums.size() / 2;
else
return s.size();
}