본문 바로가기
공부 정리/LeetCode

[LeetCode] happyNumber js

by 경적필패. 2023. 2. 8.
반응형

문제

 

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 squares of its digits.
  • Repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1.
  • Those numbers for which this process ends in 1 are happy.

Return true if n is a happy number, and false if not.

 

 


문제[번역]

 

숫자 n이 happy number인지 결정하는 알고리즘을 작성합니다.

happy number는 다음과 같은 과정을 통해 정의되는 수 입니다

임의의 양의 정수로 시작하여 숫자를 숫자의 제곱합으로 바꿉니다.
숫자가 1이 될 때까지 이 과정을 반복하거나, 1을 포함하지 않는 주기로 끝없이 반복한다.
이 과정이 1로 끝나는 숫자들은 행복하다.

n이 happy number이면 true를 반환하고 그렇지 않으면 false를 반환합니다.

 

 


 

Example 1

1

true

 

Example 2

1000000000
true

Example 3

24

false

 


제약조건

 

1 <= n <= 231 - 1


접근방법

set 자료구조를 통해 이미 확인한 숫자인지 확인해야 합니다.

수를 입력받을 때 마다 숫자를 잘라서 제곱하여 합한 뒤, 반복문을 돕니다.

반복문을 도는 도중에, n이 1이되면 true 이미 set자료구조에 있는 값을 넣으면 false 입니다.

 

 

 


코드

/**
 * @param {number} n
 * @return {boolean}
 */
var isHappy = function(n) {
    const set = new Set();
    while(n !== 1){
        if(set.has(n)) return false;
        set.add(n);
        n = String(n);
        let sum = 0;
        for(let i=0; i<n.length; i++){
            sum += Number(n[i])*Number(n[i]);
        }
        n = sum;
    }
    return true;
};

 

 

 


주의사항

x

 

 

 

 

반응형

'공부 정리 > LeetCode' 카테고리의 다른 글

[LeetCode] Min Cost Climbing Stairs 자바  (0) 2022.06.27
[LeetCode] Minimum Knight Moves 자바  (0) 2022.06.23
[LeetCode] Climbing Stairs (java)  (0) 2022.05.25
[LeetCode] Sqrt(x) (java)  (0) 2022.05.25
[LeetCode] Add Binary (java)  (0) 2022.05.24

댓글