https://www.acmicpc.net/problem/1254
1. 아이디어
현재 문자열이 팰린드롬이 아니면 뒤에 * 문자를 추가해서 *인 부분을 제외하고 팰린드롬이 되는지 판단하는 방식으로 해결했다.
2. 문제풀이
팰린드롬은 문자열의 양 끝부터 중간까지 계속 문자가 일치하는지 비교하는 방식으로 구할 수 있다. 이때 한쪽 끝 문자가 *이면 그냥 넘어가는 방식으로 구현해서 팰린드롬이 될 때까지 반복하도록 구현했다.
3. 코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
while (true) {
if (isPalindrome(input)) {
System.out.println(input.length());
return;
}
input = new StringBuilder(input).append("*").toString();
}
}
private static boolean isPalindrome(String str) {
boolean flag = true;
for (int i = 0; i < str.length() / 2; i++) {
if (str.charAt(str.length() - 1 - i) == '*') continue;
if (str.charAt(i) != str.charAt(str.length() - 1 - i)) {
flag = false;
break;
}
}
return flag;
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 2665번 - 미로만들기 [Java] (0) | 2025.02.01 |
---|---|
[백준] 1261번 - 알고스팟 [Java] (0) | 2025.02.01 |
[백준] 25426번 - 일차함수들 [Java] (0) | 2025.02.01 |
[백준] 10826번 - 피보나치 수 4 [Java] (0) | 2025.02.01 |
[백준] 10870번 - 피보나치 수 5 [Java] (0) | 2025.02.01 |