알고리즘/SWEA

[JAVA][SW Expert Academy] 1217. 거듭 제곱

minddi 2022. 8. 18. 22:28

 

 [SW Expert Academy] 1217. 거듭 제곱

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14dUIaAAUCFAYD

 

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 범위를 넘어가지 않는다.
 
[입력]
각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고 그 다음 줄에는 두 개의 숫자가 주어진다.

[출력]
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스에 대한 답을 출력한다.
 

 해결 순서

1. 첫번째 입력 값을 두번째 입력 값 만큼 제곱
2. a의 0제곱은 1
3. a의 x제곱은 a * a * a * ... (x번 반복) => x번만큼 재귀 호출

 

 

 문제 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.Scanner;
 
public class Solution
{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        int T = 10;
        
        for(int test_case = 1; test_case <= T; test_case++)
        {
            int TC = sc.nextInt();
            int a = sc.nextInt();
            int count = sc.nextInt();
            
            System.out.println("#" + TC + " " + square(a, count));
        }
    }
    
    public static int square(int a, int count) {
        if (count == 0) {
            return 1;
        } else {
            return a * square(a, count-1);
        }
    }
}
cs