30-Day LeetCoding Challenge - 2Day (Happy Number )

w-beom·2020년 4월 2일
0

Happy Number

Write an algorithm to determine if a number is "happy".

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example:

Input: 19
Output: true
Explanation: 
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

Solution

class Solution {
    public boolean isHappy(int n) {
    	int sum = 0;
	int length;
	int cnt=0;
	while (cnt<10) {
		length = (int) (Math.log10(n) + 1);
		for (int i = 0; i < length; i++) {
			sum += Math.pow((n % 10), 2);
			n /= 10;
		}
		System.out.println(sum);
		if (sum == 1) {
			return true;
		} else {
			n = sum;
			sum = 0;
		}
		cnt++;
	}
	return false;
   }
}
profile
습득한 지식과 경험을 나누며 다른 사람들과 문제를 함께 해결해 나가는 과정에서 서로가 성장할 수 있는 기회를 만들고자 노력합니다.

1개의 댓글

comment-user-thumbnail
2020년 4월 23일

cnt 를 10번으로 두고 하셨는데,
10번 연산 후에 루프가 형성되는 경우도 있지않을까요?

답글 달기