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 객체 아주 유용하게 사용할 듯 하다.