입력된 문자열의 길이가 n일 때
[n/2]길이만큼의 접두사, 접미사도 팰린드롬이고
재귀적으로 접두사, 접미사도 팰린드롬이면 아카라카 팰린드롬이라고 부르는데
재귀적으로 처리하면 된다.
String suffix = input.substring(len/2+(len%2==0 ? 0 : 1), len);
접미사의 경우 입력된 문자열의 길이가 홀수냐 짝수냐에 따라서
문자열을 자르는 인덱스를 다르게 구분해줘야했다.
n=7이면 123,567
n=6이면 123,456이듯이 말이다.
import java.io.*;
public class _23304 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
if(isAkarakaPalindrome(input)){
System.out.println("AKARAKA");
}
else{
System.out.println("IPSELENTI");
}
}
// 재귀적으로 아카라카 팰린드롬인지 확인하는 함수
static public boolean isAkarakaPalindrome(String input){
int len = input.length();
if (len==1){
return true;
}
boolean result = false;
if (len>=2){
// 접두사 접미사 분리
String prefix = input.substring(0, len/2);
String suffix = input.substring(len/2+(len%2==0 ? 0 : 1), len); // 짝수 홀수에 따라 다르게 처리
// input이 팰린드롬인지 확인
for(int i=0;i<len/2;i++){
if(input.charAt(i)!=input.charAt(len-1-i)){
return false;
}
}
// input의 접두사 접미사도 아카라카 팰린드롬이면 true
if(isAkarakaPalindrome(prefix) && isAkarakaPalindrome(suffix) ){
result = true;
}
}
return result;
}
}