팰린드롬을 확인하는 방법까지는 고민한 부분이 맞았으나 어떤 방식으로 구현해야 할지에서 막혔던 문제다 아직은 많이 부족한 것 같다
팰린드롬은 첫 글자와 끝 글자가 같은지 확인하면 된다
그리고
앞부분을 한개씩 잘라내면서
잘라낸 부분이 팰린드롬인지 확인한다
예시를 들면
abab는 앞 뒤가 다르다
앞을 잘라 bab를 만든다
그럼 bab는 팰린드롬이 맞다
그럼 반복 횟수는 0 부터 시작해서 두번째 이므로1 abab의 길이는 4로
5를 출력하게 된다
qwerty가 sub가 어떻게 이뤄지는지 확인할 수 있다
package S2_Baekjoon;
import java.util.*;
public class Baekjoon1254 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String S = sc.nextLine();
if(isPalin(S)){
System.out.println(S.length());
} else { // S의 앞부분을 하나씩 잘라내면서 잘라낸 부분이 팰린드롬인지 확인
for(int i = 0; i < S.length(); i++){
String sub = S.substring(i);
// 만약 잘라낸 부분이 팰린드롬이라면,
// 원래 문자열의 길이와 잘라낸 부분의 길이를 합한 값을 출력하고 반복문을 종료
if(isPalin(sub)){
System.out.println(S.length() + i);
break;
}
}
}
}
// 문자열 S가 팰린드롬인지 확인하는 메서드
public static boolean isPalin(String S){
// 앞쪽 문자와 뒤에서 같은 위치의 문자가 일치하지 않으면 false를 반환
// 모든 문자가 일치하면 팰린드롬으로 판단하고 true를 반환합니다.
for(int i = 0; i <= S.length()/2; i++){
if(S.charAt(i) != S.charAt(S.length() - i - 1)) {
return false;
}
}
return true;
}
}