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