개발 공부~

[SWEA D3] 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 .py 본문

코딩테스트/SWEA

[SWEA D3] 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 .py

머밍 2024. 7. 8. 16:04

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&passFilterYn=Y&contestProbId=AV14dUIaAAUCFAYD&categoryId=AV14dUIaAAUCFAYD&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=P&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제

다음과 같이 두 개의 숫자 N, M이 주어질 때, N의 M 거듭제곱 값을 구하는 프로그램을 재귀호출을 이용하여 구현해 보아라.

2 5 = 2 X 2 X 2 X 2 X 2 = 32

3 6 = 3 X 3 X 3 X 3 X 3 X 3 = 729

총 10개의 테스트 케이스가 주어진다.

결과 값은 Integer 범위를 넘어가지 않는다.

  • 입력
    각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고 그 다음 줄에는 두 개의 숫자가 주어진다.
  • 출력
    #부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스에 대한 답을 출력한다.

Solution

재귀호출을 이용하여 구현 해야한다.
n의 m 거듭제곱의 값을 구하기 때문에 m은 n을 곱하는 횟수이므로 계산 함수이자 재귀함수인 cal의 인자로 받았다. m이 0이 되면 1을 곱하여 종료한다. m의 값이 작아지는 재귀함수를 구현하였다.

=> 재귀함수에서 끝나는 부분과 인자로 받는 부분이 중요하다. 이 문제는 간단하지만 앞으로 다양한 문제를 통해 재귀함수를 구현해야겠다.

def cal(n, m):
    if m == 0:
        return 1
    
    else:
        return n * cal(n, m-1)

for tc in range(1, 11):
    tc = int(input())
    n, m = map(int, input().split())
    
    answer = cal(n, m)
    print(f'#{tc} {answer}')