※ 해시테이블을 이용하는 unordered 연관 컨테이너를 사용함
nums집합에서 (사이즈/2)만큼 선택해야 하기 때문에 최대로 (사이즈/2)만큼 가질 수 있지만
nums집합의 원소 종류가 (사이즈/2)보다 작을 수도 있다.
따라서 원소 종류 개수와 (사이즈/2) 중 작은 값이 답이다.
unordered_set집합에 nums의 원소들을 넣어서 중복을 없앤다.
#include <unordered_set>
#include <iostream>
#include <algorithm>
using namespace std;
int solution(vector<int> nums)
{
unordered_set<int> s(nums.begin(), nums.end());
return min(nums.size() / 2, s.size());
}
int main()
{
cout << solution({ 3,1,2,3 }) << '\n';
cout << solution({ 3,3,3,2,2,4 }) << '\n';
cout << solution({ 3,3,3,2,2,2 }) << '\n';
}
실행 결과
2
3
2