동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다.
동호는 규완이를 위한 깜짝 선물을 준비했다. 동호는 규완이가 적어놓고 간 문자열 S에 0개 이상의 문자를 문자열 뒤에 추가해서 팰린드롬을 만들려고 한다. 동호는 가능하면 가장 짧은 문자열을 만들려고 한다.
동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력하는 프로그램을 작성하시오.
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 최대 50이다.
첫째 줄에 동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력한다.
Java 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
static String s;
static int len;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
s = br.readLine();
length = s.length();
for (int i = 0; i < s.length(); i++) {
// 구간을 잘라서 펠린드롬인지 아닌지 확인
if (isPalindrome(s.substring(i))) {
break; // 펠린드롬이면 탈출
}
length++;
}
System.out.println(length);
}
// 팰린드롬 여부 체크할 함수
static boolean isPalindrome(String s) {
int start = 0; // 시작
int end = s.length() - 1; // 끝
while (start <= end) {
// 팰린드롬이 아닌 경우
if (s.charAt(start) != s.charAt(end))
return false; // 문자열의 맨 앞과 뒤의 문자가 다르기 때문에 팰린드롬이 아님
start++;
end--;
}
return true; // 팰린드롬이 아닌 경우에 안걸리면 팰린드롬
}
}