[프로그래머스 | Javascript] 폰켓몬

박기영·2022년 9월 11일
0

프로그래머스

목록 보기
2/126

프로그래머스. 코딩테스트 고득점 Kit.
해시. 1단계

solution

function solution(nums) {
    // 고를 수 있는 폰켓몬의 수
    let num = nums.length / 2;
    
    // nums 배열에서 중복되는 번호를 제거한다.
    // Set 객체를 배열로 변환해줘야 배열 메서드를 사용할 수 있다.
    let set = Array.from(new Set(nums));
    
    // set 배열의 길이와 num이 같다면, 가장 많은 종류는 set 배열의 길이 혹은 num과 같다.
    // 다르다면, 가장 많은 종류는 num과 set 배열의 길이 중 작은 값과 같다.
    if(num === set.length){
        return num;
    } else if(num !== set.length){
        return Math.min(num, set.length);
    }
}

num은 우리가 가져갈 수 있는 폰켓몬의 숫자이다.
set은 입력 데이터 nums에서 중복되는 폰켓몬을 없앤 것이다.

예시를 통해 살펴보자.

입력 데이터 [3,1,2,3]
num = 2
set = [1,2,3] => set.length = 3

최대한 많은 종류를 고른다면 3마리를 뽑을 수 있지만,
가져갈 수 있는 것은 2마리밖에 없으므로
가져갈 수 있는 최대한 많은 종류는 2마리이다.

입력 데이터 [3,3,3,2,2,2]
num = 3
set = [2,3] => set.length = 2

가져갈 수 있는 것은 3마리인데,
최대한 많은 종류를 고른다면 2마리를 뽑는 경우의 수 밖에 없다.
따라서, 최대한으로 다양한 종류는 2마리이다.
profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글