Posts 알고리즘 - 1217. [S/W 문제해결 기본] 거듭 제곱
Post
Cancel

알고리즘 - 1217. [S/W 문제해결 기본] 거듭 제곱

SW Expert Academy 의 1217번 - 거듭 제곱 문제입니다.

예를 들어 인풋이 2 5 로 주어지면, 2를 5번 곱한 결과를 출력하며, 3 6 으로 주어지면, 3을 6번 곱한 결과를 출력합니다.

단, 거듭제곱 값을 구할 때 재귀 호출로 구현해야 합니다.

쉽게 구현할 수 있는 문제라고 생각됩니다.


  • 난이도 : 1

문제 조건

  • 총 10개의 테스트 케이스가 주어지고 결과값은 정수(int) 범위를 넘지 않는다.

Input

첫 줄에는 테스트 케이스 번호, 그 다음 줄에는 두 개의 수가 주어진다.

Output

거듭제곱 결과를 출력한다.


처음에 생각한 아이디어

재귀 호출로 정해진 횟수만큼 곱셈을 해야 하므로, 재귀함수는 곱할 숫자와 횟수 두 개의 인자를 가져야 한다고 생각하였습니다. (문제에서 N(숫자) M(거듭제곱 횟수) 두 개가 주어지게 됨.)

그리고 재귀 호출을 진행하며, 정해진 횟수만큼 호출이 이루어졌을 경우에 재귀 호출을 빠져나오는 조건문을 만들어주겠다는 생각을 했습니다.

재귀 함수의 구현은 재귀 함수 탈출문이 정말 중요합니다. 탈출하지 못하면 영원히 도는 프로그램이 되기 때문입니다.


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>

int Mul(int N, int M){

    if (M == 1)
        return N;
    return N * Mul(N, --M);    
}

int main(){

    int test_case;
    int N, M, result;

    for (int T=0; T<10; T++){
        scanf("%d",&test_case);
        scanf("%d %d",&N,&M);
        result = Mul(N, M);
        printf("#%d %d\n",test_case,result);
    }
}

알고리즘 - 1216. [S/W 문제해결 기본] 회문 찾기(2)

알고리즘 - 1218. [S/W 문제해결 기본] 괄호 짝짓기