PS/LeetCode

LeetCode / Implementation / 202번 / Happy Number / JS

KimMinJun 2023. 4. 18. 01:50

< 문제 바로가기 >

 

Happy Number - LeetCode

Can you solve this real interview question? Happy Number - Write an algorithm to determine if a number n is happy. A happy number is a number defined by the following process: * Starting with any positive integer, replace the number by the sum of the squar

leetcode.com

 

< 문제 간단설명 >
양의 정수 n이 입력값으로 들어온다. n의 각 자리를 나누어서 각각 제곱을 한 뒤 더해준 것이 다음 수가 된다. 이 과정을 1이 될 때 까지 반복한다. 1이 된다면 true를 반환하고 무한루프에 빠진다면 false를 반환한다.

 

예를 들어 19일 경우, 1^2 + 9^2 = 82가 되고, 다시 8^2 + 2^2 = 68, 6^2 + 8^2 = 100, 1^2 + 0^2 + 0^2 = 1이 된다. 따라서 true를 반환한다.

 

/**
 * @param {number} n
 * @return {boolean}
 */
var isHappy = function(n) {
    let numSet = new Set();

    let num = n;
    let sum = 0;
    while(true) {
        sum = 0;
        if(num === 1) return true;

        num.toString().split('').map(Number).forEach((el) => {
            sum += el ** 2;
        });
        num = sum;

	// 이미 set에 저장되어 있는수라면 무한루프이므로 false 반환
        if(numSet.has(sum)) {
            return false;
        }
        numSet.add(sum);
    }
};