https://www.acmicpc.net/problem/1254
문제 접근
머릿 속에서 떠올리는 거랑 직접 코드로 짜는 거랑은 다르다고 느꼈다.
문제를 풀 수 있는 규칙을 떠올리는 과정이 쉽지 않았다.
그래서 다른 사람의 도움을 받았음
1. 앞에 문자부터 하나씩 잘라가면서 만든 문자열로 앞, 끝 문자를 한 칸씩 땡기면서 비교 (전체 틀)
2. 비교하면서 문자가 다르면 다시 돌아와서 기존 문자열 크기에 +1 → 잘라버린 앞 문자를 문자열 맨 뒤에 붙여서 팰린드롬을 만든다는 개념
3. 맨 앞 문자 자르고 다시 앞, 끝 문자 한 칸씩 땡기면서 비교
4. 계속 비교하면서 두 문자가 같다면 앞 문자 인덱스와 뒷 문자 인덱스가 교차하는 지점이 생김
그럼 연산 종료되고 이건 팰린드롬 문자란 뜻
간단하게 첫 문자와 끝 문자를 하나씩 비교해가면서 팰린드롬이 완성되는지 확인하는데 팰린드롬이 완성안되면 앞에 있던 문자들을 문자열 뒤에 붙여서 팰린드롬으로 만들어준다.
https://ilmiodiario.tistory.com/145 ← 이 분 그림보면 이해하기 더 수월하다
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int num = str.length();
for(int i=0; i<str.length(); i++) {
if(count(str.substring(i))) break;
num++;
}
System.out.println(num);
}
private static boolean count(String s) {
int start = 0;
int last = s.length()-1;
while(start <= last ) {
if(s.charAt(start) != s.charAt(last)) return false;
start++;
last--;
}
return true;
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준 5014번 / 스타트링크 / JAVA / BFS] (1) | 2023.04.18 |
---|---|
[백준 3020번 / 개똥벌레 / JAVA / 누적합] (1) | 2023.04.16 |
[백준 1205번 / JAVA / 구현] (1) | 2022.12.21 |
[백준 / 1051번 / JAVA / 구현] (1) | 2022.12.17 |
[백준 10773번 / JAVA / 구현 ] (0) | 2022.12.05 |
댓글