코린이의 소소한 공부노트

[LeetCode/Easy] 202. Happy Number 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 202. Happy Number

무지맘 2023. 1. 23. 14:14

1. Input

1) int n

 

2. Output

1) nhappy number라면 true, 아니면 false 반환

// happy number

- 각 자릿수의 제곱의 합을 구한다.

- 합이 1이 될 때까지 반복한다. 1이 아니라면 다시 각 자릿수의 제곱의 합을 구한다.

- 1이 되면 happy number가 된다.

 

3. Constraint

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

 

4. Example

Input: n = 19 -> Output: true

설명:

1^2 + 9^2 = 82

8^2 + 2^2 = 68

6^2 + 8^2 = 100

1^2 + 0^2 + 0^2 = 1

 

5. Code

1) 첫 코드(2023/01/23)

import java.util.*;
 
boolean answer = false, duplicate = false;
long sum = 0, num = n;
ArrayList<Long> list = new ArrayList<Long>();
while(!answer && !duplicate){
    while(num>0){
        sum += (int)Math.pow(num%10, 2);
        num /= 10;
    }
    num = sum; sum = 0;
    if(num==1) answer = true;
    else if(!list.contains(num)) list.add(num);
    else duplicate = true;
}
return answer;

- 성능이 별로긴 하지만, 딱히 방법이 생각나지 않는다.