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

Derhon·2023년 1월 11일
0

문제풀이

목록 보기
2/13
post-thumbnail

프로그래머스 - 폰켓몬

나의 답

function solution(nums) {
    let answer = 0;
    
    //폰켓못이 담길 object
    let myBag = new Map();
    
    //nums를 돌면서 key(폰켓몬 번호) : value(마릿수) 형태의 해시 생성
    nums.forEach((monster) => {
        if(myBag.get(monster)) myBag.set(monster, myBag.get(monster) + 1);
        else myBag.set(monster, 1);
    });
    
    //폰켓몬의 종류가 N/2 보다 크면, 최댓값인 N/2가 정답.
    //폰켓몬의 종류가 N/2 보다 작다면, 최댓값은 폰켓몬 종류의 수가 됨.
    if(myBag.size < nums.length / 2) answer = myBag.size;
    else answer = nums.length / 2;
    
    return answer;
}

카테고리가 Hash이므로, 최대한 이것을 염두하여 풀었다.
문제 난이도가 쉬운 편이기 때문에, 바로 정답을 맞추긴 했지만.. 다른 분들의 답을 찾아보니 Set 객체를 이용하는 방법이 있었다.
Set 객체를 이용하면 함수가 굉장히 짧아지므로 한 번 고쳐보았다.

추가 답

Set 객체

function solution(nums) {
    let answer = 0;
    
    let myBag = [...new Set(nums)];
    let limit = nums.length / 2;
    
    return myBag.length > limit ? limit : myBag.length;
}

코드가 심각하게 깔끔해져서 당황😲
개발할 때는 잘 모르겠지만... 코테 문제 풀 때 앞으로 Set 객체 아주 유용하게 사용할 듯 하다.

profile
🧑‍🚀 이사했어요 ⮕ https://99uulog.tistory.com/

0개의 댓글