문제 해석
- 이 문제는 팰린드롬인지 아닌지 판별하는 문제이다.
- 첫번째 줄에는 테스트케이스의 개수(T)를 입력받는다. (단, T는 1이상이고 1000이하이다.)
- 두번째 줄부터는 테스트케이스의 개수T만큼 대문자로 구성된 문자열 S가 주어진다.
- 모두 입력받았다면 T개 만큼의 문자열이 팰린드롬인지 판별하여 팰린드롬이면 1, 아니면 0을 반환하며 재귀가 몇번 돌았는지도 반환하여 출력하면 된다. (출력 형태 : 팰린드롬 여부(1 or 0) 재귀 횟수(1~))
코드
import java.io.*;
public class Main {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int i = 0; i < T; i++){
isPalindrome(br.readLine());
}
br.close();
System.out.println(sb);
}
static void isPalindrome(String str){
int[] result = recursion(str, 0, str.length()-1, 0);
sb.append(result[0]).append(" ").append(result[1] + "\n");
}
static int[] recursion(String str, int fp, int ep, int count){
count++;
if(fp >= ep){
return new int[]{1, count};
}
else if(str.charAt(fp) != str.charAt(ep)){
return new int[]{0, count};
}
else{
return recursion(str, fp+1, ep-1, count);
}
}
}
결과
느낀 점
- 이 문제는 이미 문제해서 답을 모두 말해주고 있어서 큰 어려움없이 풀 수 있었다. (C언어 코드를 JAVA언어로 바꾼 수준...)