[Algorithm🧬] 백준 14954 : Happy Number

또상·2022년 11월 14일
0

Algorithm

목록 보기
88/133
post-thumbnail

문제

Happy Number 이 아니라면 언젠가는 순환순열이 될 것임. -> 궁금해서 찾아봤더니 Happy Number 가 아닌 순환순열은 언젠가 4가 되는 성질이 있다고 함.

import sys

readl = sys.stdin.readline


def 자릿수제곱합(num):
    sum = 0
    while num:
        sum += (num % 10) ** 2
        num //= 10

    return sum

def isHappy(num):
    d = 자릿수제곱합(num)
    arr = []

    while True:
        d = 자릿수제곱합(d)

        if d in arr:
            return False

        arr.append(d)

        # 행복한 수가 아니라면 자릿수제곱합은 언젠가 4가 나오는 성질이 있음.
        # if d in arr~~~ 대신 아래의 코드를 넣어도 됨.
        # if d == 4:
        #     return False

        if d == 1:
            return True


n = int(readl())


for i in range(n, 0, -1):
    if isHappy(i):
        print(i)
        break
profile
0년차 iOS 개발자입니다.

0개의 댓글