[LeetCode] Happy Number

아르당·2025년 10월 13일

LeetCode

목록 보기
46/68
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

숫자 n이 행복한지 결정하는 알고리즘을 작성해라.
행복한 숫자는 다음 과정으로 정의되는 숫자이다.

  • 임의의 양의 정수로 시작해서 해당 숫자를 각 자릿수의 제곱의 합으로 바꾼다.
  • 숫자가 1이 될 때까지(1이 되면 그대로 유지) 이 과정을 반복하거나, 1을 포함하지 않는 순환에서 무한 루프를 돌게 된다.
  • 이 과정이 1로 끝나는 숫자는 행복한 숫자이다.

n이 행복한 숫자이면 true, 그렇지 않으면 false를 반환해라.

Example

#1
Input: n = 19
Output: true
Explanation:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

#2
Input: n = 2
Output: false

Constraints

  • 1 <= n <= 2^31 - 1

Solved

class Solution {
    public boolean isHappy(int n) {
        if(n == 1 || n == 7) return true;
        else if(n < 10) return false;
        else{
            int sum = 0;
            
            while(n > 0){
                int temp = n % 10;
                sum += temp * temp;
                n = n / 10;
            }

            return isHappy(sum);
        }
    }
}

1과 7은 행복한 숫자이므로 true를 반환한다.
10보다 작은 숫자는 false를 반환한다.
그외에 숫자들은 n을 10으로 나누고 나머지를 제곱해서 sum에 더해주는 것을 반복한다. 이 과정이 끝나면 sum을 isHappy 메소드의 메개변수에 넣고 호출한다.

profile
내 마음대로 코드 작성하는 세상

0개의 댓글