[LeetCode] Unique Number of Occurrences

준규·2022년 8월 23일
0

문제는 아주 간단하다

숫자 배열 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을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글