일단 배열에서 종류가 겹치는 포켓몬들을 제거하고,
N/2 마리의 포켓몬을 가져갈 수 있다고 했으니까 겹치지 않는 유일한 포켓몬의 수와 N/2를 비교했을 때 둘 중 작은 값이 정답이 된다.
왜냐면 예를 들어 겹치는 포켓몬을 제거했을 때 배열안에 [1,4,5,6]이 있고 N = 6이라면 결국 3마리 밖에 가져가지 못하니까 N/2가 정답이 되는 것이다.
function solution(nums){
let uniNums = nums.filter((v,idx) => idx === nums.indexOf(v))
return uniNums.length < nums.length/2 ? uniNums.length : nums.length / 2
}
배열에서 중복된 요소를 제거하고 유니크한 배열을 만들 때 filter 메소드를 사용하였지만
const arr = [...new Set(nums)];
와 같이 Set 객체 안에는 중복 요소가 들어갈 수 없는 성질을 이용해서 코드를 작성할 수도 있다.