문제이해

당신은 최대한 다양한 종류의 폰켓몬을 가지길 원하기 때문에, 최대한 많은 종류의 폰켓몬을 포함해서 N/2마리를 선택하려 합니다. N마리 폰켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어질 때, N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성해주세요.

최대한 많은 폰켓몬을 갖고 싶습니다. 그리고 최대 N/2마리 선택합니다.
최대값은 N/2입니다.

로직

예를 들어
[3,3,3,2,2,2] 의 경우 중복을 제거하면 [3,2]죠. 2개입니다. N/2면 3이죠.
답은 2입니다.

중복을 처리해주는 것도 필요한대요. 중복을 제거하기 위해 Set이란 자료구조를 사용했습니다.
Set을 안쓰고 객체리터럴로 구현해줘도 됩니다.

굳이 Set를 쓴 이유는 다른 언어에서도 프로그래밍 syntax가 달라질뿐 결국 맥락이 같기 때문입니다.

code

function solution(nums) {

    var answer = 0;
    let set = new Set();

    for(const number of nums){
        set.add(number);
    }

    console.log(`set = ${set.size}, num = ${nums.length/2}`)

    if( set.size < nums.length/2){
        answer = set.size;
    } else { 
        answer = nums.length/2;
    }

    return answer;
}