프로그래밍/HackerRank
[HackerRank][Python3] Recursive Digit Sum
snoopybox
2018. 6. 7. 02:44
Problem :
https://www.hackerrank.com/challenges/recursive-digit-sum/problem
My Solution :
#!/usr/bin/env python3
memo = {i:i for i in range(10)}
def super_digit(n):
if n in memo:
return memo[n]
tmp_n = sum(map(int, str(n)))
if tmp_n in memo:
return memo[tmp_n]
memo[tmp_n] = super_digit(tmp_n)
return memo[tmp_n]
def digitSum(n, k):
tmp_n = super_digit(n)
return super_digit(tmp_n*k)
n, k = map(int, input().strip().split())
result = digitSum(n, k)
print(result)
My Solution 2 :
생각해보니 무조건 작아지고 분기하지 않기 때문에 memoization이 사용될 일이 없다. 그래서 다시 아래와 같이 풀어봄.
#!/usr/bin/env python3
def super_digit(n):
if n < 10:
return n
tmp_n = sum(map(int, str(n)))
return super_digit(tmp_n)
def digitSum(n, k):
return super_digit(n*k)
n, k = map(int, input().strip().split())
result = digitSum(n, k)
print(result)
Super Simple Solution :
n, k = map(int, input().strip().split()) print(n*k%9 or 9)