회문 Batch 컴파일 명령
시간 제한 | 메모리 제한 | 제출 횟수 | 통과한 사람 수 | 비율 |
---|---|---|---|---|
1000 ms | 128 MiB | 2128 | 275 | 12.92% |
영문 소문자로 구성된 문자열(string)이 주어져 있다. 이 문자열의 부문자열(substring)들에 대해서 "점수"를 정의하는데, 점수는 부문자열의 길이에 그 부문자열이 전제 문자열에 등장하는 횟수를 곱한 값이다. 주어진 문자열에 대해 회문(palindrome)이 되는 부문자열들 중 가장 높은 점수를 가진 것을 찾아서 그 점수를 출력하는 프로그램을 작성하라.
입력
입력은 단 한 줄이며, 영문 소문자(a-z)로 구성된 문자열이 주어진다.
출력
출력은 하나의 자연수이며 회문이 되는 부문자열들에서 찾을 수 있는 가장 높은 점수이다.
예제
입력 | 출력 |
---|---|
abacaba | 7 |
www | 4 |
추가 설명
문자열 $s$에 대해서 $|s|$는 그 길이를 말한다.
부문자열은 문자열 $s_{1}, s_{2}, cdots, s_{|s|}$의 임의의 연속적인 일부분, 즉 $s_{i}s_{i+1}cdots s_{j}$ ($1 \le i \le j \le |s|$)이다. 문자열 전체도 자신의 부문자열이다.
어떤 문자열이 회문이라 함은 그 문자열을 앞에서 뒤로 읽으나 뒤에서 앞으로 읽으나 동일한 경우를 말한다.
입출력 예의 첫 번째 경우의 문자열에 회문이 되는 부문자열은 모두 일곱 가지이다: a
, b
, c
, aba
, aca
, bacab
, abacaba
.
a
는 문자열에 네 번 등장하므로 점수는 $4 \times 1 = 4$점이다.b
는 문자열에 두 번 등장하므로 점수는 $2 \times 1 = 2$점이다.c
는 문자열에 한 번 등장하므로 점수는 $1 \times 1 = 1$점이다.aba
는 문자열에 두 번 등장하므로 점수는 $3 \times 2 = 6$점이다.aca
는 문자열에 한 번 등장하므로 점수는 $3 \times 1 = 3$점이다.bacab
는 문자열에 한 번 등장하므로 점수는 $5 \times 1 = 5$점이다.abacaba
는 문자열에 한 번 등장하므로 점수는 $7 \times 1 = 7$점이다.
따라서, 회문들 중 가장 높은 점수는 7점이다.
채점
다음과 같은 다섯 개의 서브태스크로 채점이 이루어 진다.
서브태스크 1 (8점)
$1 \le |s| \le 100$
서브태스크 2 (15점)
$1 \le |s| \le 1000$
서브태스크 3 (24점)
$1 \le |s| \le 10000$
서브태스크 4 (26점)
$1 \le |s| \le 100000$
서브태스크 5 (27점)
$1 \le |s| \le 300000$