
설명이 약간 복잡하게 되어 있으나, 핵심은 최대 마리의 폰켓몬을 선택하고자 한다는 것이다. 폰켓몬의 종류가 보다 적을 수 있으므로 몇 종류가 있는지 알아야 한다.
import java.util.*;
import java.util.stream.*;
class Solution {
public int solution(int[] nums) {
Set<Integer> s = new HashSet<>(Arrays.stream(nums).boxed().collect(Collectors.toList()));
return Math.min(nums.length / 2, s.size());
}
}
이 경우에 사용하기 적합한 자료구조는 Set이다. 같은 원소가 몇 번 중복되는지는 상관없고 그냥 몇 종류의 원소가 있는지만 파악하면 되기 때문이다.
이 코드에서 중요한 것은 Java에서 int[] 타입을 List<Integer> 타입으로 변환하는 방법이다. 나는 이를 위해 stream - boxed - collect 메서드 체인을 사용했다. 코드에서 Arrays.stream(nums).boxed().collect(Collectors.toList())에 해당하는 부분이다. 이 코드를 사용하려면 java.util.stream.Collectors를 불러와야 한다.