Set
자료구조를 사용하여 숫자가 반복중인지 검사할 수 있도록 준비한다.n
이 1이 될때까지 순회하며 확인한다.n
이 이미 검사되었던 수인지 확인하여 그렇다면 행복 숫자가 아님을 반환한다.n
을 문자로 각 자리마다 분리하여 제곱한 후 재정의한다.n
이 반복되지 않고 1이 되었다면 행복 숫자임을 반환한다.function isHappy(n: number): boolean {
// 방문 숫자 검사
const visit = new Set<number>()
while(n !== 1) {
// 무한 반복되고있다면 행복 숫자가 아님
if(visit.has(n)) return false
visit.add(n)
const strN = String(n)
const splitted = strN.split("")
// 각 자릿수 제곱
n = splitted.reduce((a, b) => a + (Number(b) ** 2), 0)
}
// 1이 되었다면 행복숫자
return true
};