코드트리 챌린지

[코드트리] 각 자리 숫자의 제곱 / 재귀함수

우당탕탕코딩일기 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