OneDev

[JAVA] 백준 25501번 : 재귀의 귀재 본문

자료구조&알고리즘/BOJ

[JAVA] 백준 25501번 : 재귀의 귀재

one_dev 2023. 1. 24. 00:27

https://www.acmicpc.net/problem/25501

 

25501번: 재귀의 귀재

각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다.

www.acmicpc.net

◎ 입력

첫째 줄에 테스트케이스의 개수 T가 주어진다. (1≤T≤1000)

둘째 줄부터 T개의 줄에 알파벳 대문자로 구성된 문자열 가 주어진다. (1≤|S|≤1000)

◎ 출력

각 테스트케이스마다 isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다.

 

◎ 풀이

문제 하단부에 Hint 로 주어진 recursion 메소드와 isPalindrome 메소드를 직접 구현할 필요가 없어 비교적 쉽게 느껴지는 문제이다. 

recursion 메소드가 호출된 횟수를 저장하기 위해 전역변수 count 를 선언하였다.

recursion 메소드가 호출 될 때마다 count 변수의 값을 1 증가시키고, 하나의 test case를 입력받을 때 다시 count 변수의 값을 초기화 시켜 각 test case별로 알맞은 값을 구할 수 있도록 변형하였다.

import java.util.Scanner;

public class Main{
	static int count;
	
    public static int recursion(String s, int l, int r){
    	count++;
        if(l >= r) return 1;
        else if(s.charAt(l) != s.charAt(r)) return 0;
        else return recursion(s, l+1, r-1);
    }
    public static int isPalindrome(String s){    	
        return recursion(s, 0, s.length()-1);
    }
    
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);        
       
        int t = scan.nextInt();
        for(int i=0;i<t;i++) {      
        	count = 0;
        	String s = scan.next();
        	System.out.printf("%d %d\n",isPalindrome(s),count);
        }
        
       
    }
}

 

 

 

Comments