CodingTest/LeetCode

[LeetCode] 202. Happy Number, Easy

뜸부깅 2025. 4. 8. 15:47
반응형

1. 문제

.

  • 정수 n이 주어질 때 해당 정수가 happy number인지 판단하라.
    • 각 자리수의 제곱 후 더한다.
    • 더한 결과가 1이 될 때 까지 반복한다.
    • 무한 반복되면 해당 수는 happy number가 아니다.

2. 해결

function isHappy(n: number): boolean {
    
    const set = new Set<number>();
    
    let sum:number = n;
    
    while(sum !== 1) {
    
        let newSum = 0;
        for(const num of String(sum)) {
            newSum += Math.pow(Number(num),2);
        }
        if(set.has(newSum)) return false;
        else {
            set.add(newSum)
            sum = newSum;
        }
    }

    return true;
};
  • 1을 만드는 과정 중에서 생긴 합을 Set에 저장한다.
  • Set에 있는 값이 또 나오면, 해당 수는 1이 될 수 없다.