본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 25501번: 재귀의 귀재 [Java]

문제 출처: https://www.acmicpc.net/problem/25501

 

25501번: 재귀의 귀재

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

www.acmicpc.net

1. 코드

import java.util.*;

public class Main{
	
    static int result;
    public static int recursion(String s, int l, int r){
    	result++;
        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 sc = new Scanner(System.in);
    	int T = sc.nextInt();
    	for(int i = 0; i < T; i++) {
    		result = 0;
    		System.out.println(isPalindrome(sc.next()) + " " + result);
    	}
    	sc.close();
    }
}

(실행)

2. 풀이

recursion 함수의 호출 횟수를 전역 변수를 활용하여 간단하게 해결할 수 있는데 전역 변수 선언 후 문자열을 입력하기 전에 0으로 초기화를 해준 뒤 recursion 함수의 첫 줄에 1증가시키면 이 문제는 쉽게 해결된다.