728x90
leetcode.com/problems/happy-number/
아.. 재귀호출 StackOverflowError 가 났다.
class Solution {
public boolean isHappy(int n) {
if(n == 1){
return true;
}
if(n == 2 || n == 3){
return false;
}
int sum = 0;
while(n > 0){
sum += Math.pow(n % 10, 2);
n = n / 10;
}
sum += Math.pow(n, 2);
return isHappy(sum);
}
}
스터디 시간에 코드를 보고 이야기를 나눴다.
먼저, return 전에 Math.pow는 필요가 없다. 그리고 기존에도 n>0으로 했을 때 StackOverFlow 가 나는 걸 보니 return false; 인 경우가 적어서 인듯 하다. n이 2, 3일때 false인 건 알았는데 규칙을 더 찾았어야 하는 로직 !
통과
class Solution {
public boolean isHappy(int n) {
if(n == 1){
return true;
} else if(n <= 5){
return false;
}
int sum = 0;
while(n > 0){
sum += Math.pow(n % 10, 2);
n = (int) n / 10;
}
return isHappy(sum);
}
}
0 ms, faster than 100.00%
👨💻 재귀 종료 조건 참고 : leetcode.com/problems/happy-number/discuss/560171/C%2B%2B-100-easy-solution
728x90
'코딩테스트' 카테고리의 다른 글
[LeetCode] 831. Masking Personal Information (0) | 2021.04.24 |
---|---|
[LeetCode] 1518. Water Bottles (0) | 2021.04.21 |
[LeetCode] 268. Missing Number (4) | 2021.04.19 |
[LeetCode] 27. Remove Element (0) | 2021.04.17 |
[LeetCode] 100. Same Tree (0) | 2021.04.17 |