[BOJ 10066] 팰린드롬
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
5
Time limit:
2.0s
Memory limit:
128M
Problem types
Allowed languages
알파벳 소문자로만 이루어진 문자열이 주어진다. 부분문자열의 "등장값" 이란 그 부분문자열이 등장하는 횟수와 부분문자열의 길이를 곱한 값이다. 문자열이 주어졌을 때, 팰린드롬이면서 가장 큰 등장값을 가지는 부분문자열을 구하는 프로그램을 작성하시오.
입력 형식
첫째 줄에 알파벳 소문자(a-z)로만 이루어진 문자열이 주어진다. 문자열의 길이는 300,000보다 작거나 같다.
출력 형식
첫째 줄에 팰린드롬인 부분문자열 중에서 가장 큰 등장값을 출력한다.
예제 입력
abacaba
예제 출력
7
힌트
문자열 s의 길이를 |s|로 나타내자.
문자열 s1s2...s|s|의 부분문자열이란 1 ≤ i ≤ j ≤ |s|를 만족하는 비어있지 않은 문자열 sisi+1...sj이다. 문자열 그 자체도 부분문자열에 포함된다.
왼쪽부터 오른쪽 순서로 읽었을 때와 오른쪽부터 왼쪽 순서로 읽었을 때가 같은 문자열을 팰린드롬이라고 한다.
예제의 경우에는 총 7개의 팰린드롬 부분문자열이 있다. a, b, c, aba, aca, bacab, abacaba.
- a는 총 4번 등장하기 때문에, 등장값은 4 × 1 = 4
- b는 총 2번 등장하기 때문에, 등장값은 2 × 1 = 2
- c는 총 1번 등장하기 때문에, 등장값은 1 × 1 = 1
- aba는 총 2번 등장하기 때문에, 등장값은 2 × 3 = 6
- aca는 총 1번 등장하기 때문에, 등장값은 1 × 3 = 3
- bacab는 총 1번 등장하기 때문에, 등장값은 1 × 5 = 5
- abacaba는 총 1번 등장하기 때문에, 등장값은 1 × 7 = 7
가장 큰 등장값을 가지는 팰린드롬 부분문자열은 abacab이고, 등장값은 7이다.
Comments