아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

부분문자열 비용의 최댓값

시간 제한2초메모리 제한512 MB

요약
문자열 T가 주어질 때, T의 모든 부분 문자열 S에 대해 (길이 곱하기 등장 횟수)의 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
문자열, 정렬, 문자열 매칭, 구현
정답자
아직 제출이 없습니다

문제

문자열 TT가 주어진다. 문자열 SS에 대해 L(S)L(S)는 SS의 길이, C(S)C(S)는 TT 안에서 SS가 등장하는 횟수라고 하고, SS의 비용을 다음과 같이 정의한다.

F(S)=L(S)×C(S)F(S) = L(S) \times C(S)

TT 안에서 SS가 등장한다는 것은 SS가 TT의 부분문자열로 나타난다는 뜻이다. 등장 위치는 서로 겹쳐도 되고, 시작 위치가 다르면 다른 등장으로 센다. 예를 들어 TT = aaaaa, SS = aaa이면 SS는 TT 안에서 3번 등장하므로 F(S)=3×3=9F(S) = 3 \times 3 = 9다.

TT의 부분문자열 중에서 비용이 가장 큰 값을 구하라.

입력

첫째 줄에 알파벳 소문자로만 이루어진 문자열 TT가 주어진다. TT의 길이는 1 이상 100,000 이하다.

출력

TT의 모든 부분문자열 SS에 대한 F(S)F(S)의 최댓값을 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    aaaaaa
    
    예상 출력
    12
    
  2. 예제 2

    입력
    ab
    
    예상 출력
    2