https://www.acmicpc.net/problem/1254
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 str = br.readLine();
int cnt = str.length();
for(int i=0; i<str.length(); i++){
if(isPalindrome(str.substring(i))){
break;
}
cnt++;
}
System.out.println(cnt);
}
private static boolean isPalindrome(String str){
char[] list = str.toCharArray();
for(int i=0; i<Math.floor(str.length()/2); i++){
if(list[i] != list[str.length()-i-1]){
return false;
}
}
return true;
}
}
예제1인 abab를 예시로 들어 설명하면,
우선 substring으로 앞에서부터 문자열을 잘라 팰린드롬인지 확인한다.
abab는 팰린드롬이 아니므로 문자열의 길이인 cnt를 증가시킨다.
bab는 팰린드롬이므로 멈춘다.
이런식으로 문자열에서 팰린드롬을 발견한 순간 그 뒤 문자열을 팰린드롬 문자열 앞 문자열의 개수만큼 붙여주면 된다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 알고리즘 : 문자열 - 대소문자 변환 (0) | 2022.06.20 |
---|---|
[JAVA] 알고리즘 : 문자열 - 문자 찾기 (0) | 2022.06.20 |
[JAVA] 백준 14425번- 문자열 집합 (0) | 2022.06.18 |
[Javascript] 알고리즘-문자열 압축 (0) | 2022.06.18 |
[JAVA] 백준 1302번- 베스트셀러 (0) | 2022.06.18 |