코딩테스트 풀이/JAVA
[LeetCode/Easy] 202. Happy Number
무지맘
2023. 1. 23. 14:14
1. Input
1) int n
2. Output
1) n이 happy 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;
- 성능이 별로긴 하지만, 딱히 방법이 생각나지 않는다.