반응형
1. 문제
- 정수 n이 주어질 때 해당 정수가 happy number인지 판단하라.
- 각 자리수의 제곱 후 더한다.
- 더한 결과가 1이 될 때 까지 반복한다.
- 무한 반복되면 해당 수는 happy number가 아니다.
2. 해결
function isHappy(n: number): boolean {
const set = new Set<number>();
let sum:number = n;
while(sum !== 1) {
let newSum = 0;
for(const num of String(sum)) {
newSum += Math.pow(Number(num),2);
}
if(set.has(newSum)) return false;
else {
set.add(newSum)
sum = newSum;
}
}
return true;
};
- 1을 만드는 과정 중에서 생긴 합을 Set에 저장한다.
- Set에 있는 값이 또 나오면, 해당 수는 1이 될 수 없다.