문제는 아주 간단하다
숫자 배열 arr 가 주어질 때 각 숫자마다 배열에서의 갯수를 세어서
갯수값의 중복이 일어나면 false, 모든 숫자의 갯수값이 유니크하면 true를 리턴하는 문제이다
Example을 보자
배열을 순회하면서 숫자 등장 횟수의 중복여부만 체크하면 된다
하나라도 중복된 횟수라면 false를 리턴하면 된다
const uniqueOccurrences = function(arr) {
let dic = {};
let check = [];
for(num of arr) {
dic[num] = (dic[num] || 0) + 1;
}
for(const key in dic) {
if(check.includes(dic[key])) {
return false;
}else {
check.push(dic[key]);
}
}
return true
}
우선 해쉬를 사용하기 위해 배열의 숫자마다 횟수를 세서 객체에 넣어주었다
(dic[num] || 0) 은 객체안에 처음 값을 넣을때는 1로 초기화 해주기 위한 코드이다
객체에 숫자의 갯수를 전부 넣어준다음
서브 배열 check를 이용해서 check안에 dic[key] 값이 있다면 바로 false를 (횟수가 중복된것이므로) 아니라면 check 배열안에 푸쉬해준다
submit을 해보니
정답이었다!