문제
https://www.acmicpc.net/problem/1254
풀이(22분)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
char[] arr = input.toCharArray();
int n = arr.length;
int answer = 0;
// 최소 길이를 계산
for (int i = 0; i < n; i++) { // 문자열의 각 접두사부터 회문 여부 확인
if (isPalindrome(arr, i, n - 1)) {
// i번째 접두사부터 끝까지가 회문이면,
answer = n + i; // 전체 길이 + 앞쪽에 추가할 문자 수
break; // 더 짧은 회문을 찾았으므로 종료
}
}
System.out.println(answer);
}
// 부분 문자열이 회문인지 확인
private static boolean isPalindrome(char[] arr, int start, int end) {
while (start < end) { // 양쪽 끝에서 가운데로 이동하며 확인
if (arr[start] != arr[end]) { // 문자가 다르면 회문이 아님
return false;
}
start++; // 왼쪽 인덱스 증가
end--; // 오른쪽 인덱스 감소
}
return true; // 모든 문자가 같으면 회문
}
}
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 1965번. 상자 넣기(JAVA) (0) | 2025.01.10 |
---|---|
[백준] 18352번. 특정 거리의 도시 찾기(JAVA) (0) | 2025.01.10 |
[백준] 1058번. 친구(JAVA) (0) | 2025.01.09 |
[백준] 1024번. 수열의 합(JAVA) (0) | 2025.01.09 |
[백준] 1051번. 숫자 정사각형(JAVA) (0) | 2025.01.07 |