문제 출처: https://www.acmicpc.net/problem/25501
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증가시키면 이 문제는 쉽게 해결된다.
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 - 10810번: 공 넣기 [Java] (0) | 2023.08.27 |
---|---|
백준 알고리즘 24060번: 알고리즘 수업 [Java] (0) | 2022.10.14 |
백준 알고리즘 2108번: 통계학(자바 Java) (0) | 2022.10.12 |
백준 알고리즘 25305번: 커트라인(자바 Java) (0) | 2022.10.11 |
백준 알고리즘 25304번: 영수증(자바 Java) (0) | 2022.10.10 |