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
객체를 이용하면 함수가 굉장히 짧아지므로 한 번 고쳐보았다.
function solution(nums) {
let answer = 0;
let myBag = [...new Set(nums)];
let limit = nums.length / 2;
return myBag.length > limit ? limit : myBag.length;
}
코드가 심각하게 깔끔해져서 당황😲
개발할 때는 잘 모르겠지만... 코테 문제 풀 때 앞으로 Set
객체 아주 유용하게 사용할 듯 하다.