코드트리 챌린지
[코드트리] 각 자리 숫자의 제곱 / 재귀함수
우당탕탕코딩일기
2023. 10. 22. 01:59
https://www.codetree.ai/missions/5/problems/square-of-each-digit/description
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
각 자리 숫자의 제곱
8자리 이하의 정수 N이 주어지면 재귀함수를 이용하여 각 자리 숫자의 제곱의 합을 출력하는 프로그램을 작성해보세요.
입력 형식
첫 번째 줄에 정수 N이 주어집니다.
- 1 ≤ N ≤ 99,999,999
출력 형식
첫 번째 줄에 정수 N의 각 자리 숫자의 제곱의 합을 출력합니다.
내가 짠 코드
n = int(input())
def f(n):
if(n<10):
return n*n
return f(n//10) + (n%10)*(n%10)
print(f(n))
우선 각 자리의 제곱을 구해야한다. 베이스 케이스에 대하여 n이 10 보다 작다면 더 이상 재귀함수를 진행할 필요가 없어진다. 이때는 n의 제곱을 리턴해준다. 그리고 다른 케이스에 대해선 다음 자리수를 호출해야하므로 f(n//10) 을 통해 10으로 나눈 몫을 인자로 넣어서 호출한다. 그리고 호출한 수에 해당 n 을 10으로 나눈 나머지 즉, 가장 마지막 자리에 있는 수의 제곱을 더한다. 이렇게 베이스케이스가 될 때까지 반복한다면 계속해서 마지막 자리수의 제곱을 더하므로 모든 자릿수의 제곱의 합을 구할 수 있다.
728x90