Leetcode Java Happy Number
업데이트:
문제
코드
public class Solution {
public boolean isHappy(int n) {
Set<Integer> set = new HashSet<>();
int sum = 0;
while (set.add(n)) {
sum = 0;
while (n > 0) {
sum += Math.pow(n % 10, 2);
n /= 10;
}
if (sum == 1) {
return true;
} else {
n = sum;
}
}
return false;
}
}
결과
설명
-
주어진 정수 n의 각 자릿수의 제곱을 더한 값을 앞의 방식대로 계속 수행했을 경우, 1이 되는지 검증하는 문제이다.
- 문제 풀이에 필요한 변수를 정의한다.
- set은 n의 각 자릿수의 제곱을 더한 값이 반복되는지 확인하기 위한 변수이다.
- sum은 각 자릿수의 제곱을 더한 값을 임시 저장하는 변수이다.
- set에 n을 넣었을 경우, 중복되지 않았을 경우 아래를 반복한다.
- sum을 0으로 초기화 하고, 각 자릿수의 제곱을 sum에 더하고 n을 10으로 나눈 값을 n에 다시 넣어준다.
- sum이 1인 경우, 주어진 문제의 결과로 true를 반환한다.
- sum이 1이 아닌 경우, n에 sum을 넣고 반복을 계속 수행한다.
- 반복이 종료된 경우 반복된 값이 계속 발생하는 경우이므로, false를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기