😎풀이

  1. Set자료구조를 사용하여 숫자가 반복중인지 검사할 수 있도록 준비한다.
  2. n이 1이 될때까지 순회하며 확인한다.
    2-1. n이 이미 검사되었던 수인지 확인하여 그렇다면 행복 숫자가 아님을 반환한다.
    2-2. n을 문자로 각 자리마다 분리하여 제곱한 후 재정의한다.
  3. 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
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글