문제 이해하기

- 전체 폰켓몬 중에서 N/2 마리만 선택할 수 있다.
- 이때 중요한 점은 가능한 한 서로 다른 종류의 폰켓몬을 선택하는 것이다.
- 먼저 폰켓몬 번호 배열에서 중복을 제거해 서로 다른 폰켓몬의 종류 수를 구한다.
1. 만약 중복 제거 후의 종류 수가 N/2보다 작다면, 선택 가능한 모든 종류를 가져갈 수 있으므로 그 값이 정답이다.
2. 반대로 중복 제거 후의 종류 수가 N/2보다 크거나 같다면, 최대 N/2마리까지만 선택할 수 있으므로 N/2가 정답이다.
3. 결국 정답은 중복 제거된 폰켓몬 종류 수와 N/2 중 더 작은 값이다.
문제 적용하기
import java.util.*;
class Solution {
public int solution(int[] nums) {
int max = nums.length/2;
HashSet<Integer> set = new HashSet<>();
for(Integer n : nums){
set.add(n);
}
return Math.min(max,set.size());
}
}
