[JavaScript ] 해시 > 폰켓몬

minkyeongJ·2024년 1월 4일
1
post-thumbnail

1단계 문제 / 해시 > 폰켓몬

[문제 해석]
아래의 문장에서 bold 처리한 문장을 머릿 속에 잘 새겨둬야 한다.

당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.

[입출력 예]

numsresult
[3,1,2,3]2
[3,3,3,2,2,4]3
[3,3,3,2,2,2]2

가져갈 수 있는 폰켓몬의 갯수는 nums.length/2가 된다.

여기서 헷갈리면 안되는게 nums.length/2의 쌍을 여러개 만드는 경우의 수를 구하는게 아니다. 가져갈 수 있는 폰켓몬의 갯수폰켓몬 볼이라고 생각해보자. 폰켓몬 볼에 넣을 수 있는 폰켓몬의 종류를 카운트 하는 것이다. 아래 코드 부분에 주석으로 각 입출력에 대한 풀이를 작성해두었으니 참고하길 바란다.

//[3,1,2,3] 4/2=2 [ ][ ]
//[3][1]
//저 공간에 들어갈 수 있는 최대 폰켓몬 종류가 총 2개

//[3,3,3,2,2,4] 6/2=3 [ ][ ][ ]
//[3][2][4]
//저 공간에 들어갈 수 있는 폰켓몬 종류가 총 3개

//[3,3,3,2,2,2] 6/2=3 [ ][ ][ ]
//[3][3][2]
//저 공간에 들어갈 수 있는 폰켓몬 종류가 총 2개

function solution(nums) {
    var answer = 0;
    let pick = Math.floor(nums.length/2);
    let setLength = [...new Set(nums)].length
    
    return setLength < pick ? setLength : pick;
}

set을 한 이유는 포켓몬의 총 갯수는 필요가 없고, 종류의 갯수가 중요하기 때문이다.

마지막 return 문을 보자.
setLength가 내가 가진 포켓몬 볼 보다 갯수가 작다면 setLength를 반환해주면 되고, 작지 않다면 폰켓몬 볼 개수만큼 다양하게 폰켓몬을 가지고 갈 수 있다는 것이니 pick을 반환하면 된다.

profile
멋진 프론트엔드 개발자를 위하여!

0개의 댓글