프로그래밍/알고리즘+코딩테스트
LeetCode/202. Happy Number
sleepyotter.
2022. 2. 19. 17:52
중요한 점은 제곱 작업을 하다가 이전에 등장한 녀석이 나오면 무조건 끝이다. 어떻게 되는 이전에 등장한 녀석이 나왔다는 것은 순환이라는 말이기 때문에 끝이다. 또는 1이거나 음수가 나와도 끝이다. 아무튼, 더 이상 제곱하는 의마가 없다면 빠져나와서 1이랑 같은지 비교하고 out하면 된다.
class Solution {
public:
bool isHappy(int n) {
set<int> precedents;
while(n>1 && precedents.find(n) == precedents.end())
{
precedents.insert(n);
n = GetSquares(n);
}
return n==1;
}
int GetSquares(int n)
{
int sum=0;
while(n>0)
{
sum += (n%10) * (n%10);
n/=10;
}
return sum;
}
};