백준 문제풀이

25501. 재귀의 귀재 (자바, Java)

뮤츠 2022. 10. 1. 22:42

미리 만들어진 매소드를 이용하는거라, 문제가 좀 길다. 그래도 친절하게 메이저 언어들은 매소드를 다 만들어줬다. 하긴 그러지 않으면 재귀 문제라 하기엔 너무 넓은 문제가 되버리니...

펠린드롬 여부는 이미 생성된 매소드가 알아서 잘 판별하지만, 언제쯤부터 판단하는지를 알기 위해 재귀를 써야하는 경우다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
    public static int[] recursion(String s, int l, int r, int count){
    	count++;
        if(l >= r) {
        	int[] result = new int[2];
        	result[0] = 1;
        	result[1] = count;
        	return result;
        } else if(s.charAt(l) != s.charAt(r)) { 
        	int[] result = new int[2];
        	result[0] = 0;
        	result[1] = count;
        	return result;
        }
        else return recursion(s, l+1, r-1, count);
    }
    
    public static int[] isPalindrome(String s){
        return recursion(s, 0, s.length()-1, 0);
    }
    
    public static void main(String[] args) throws NumberFormatException, IOException{
        
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	int n = Integer.parseInt(br.readLine());
    	String[] str = new String[n];
    	
    	for (int i=0; i<n; i++) {
    		str[i] = br.readLine();
    		System.out.println(isPalindrome(str[i])[0] + " " + isPalindrome(str[i])[1]);
    	}
    }
}