함수 루프 탐지

시간 제한1초메모리 제한1024 MB

요약
서로 다른 함수명으로만 이루어진 연속 구간 중 연속해서 가장 많이 반복되는 구간을 찾아 길이와 반복 횟수를 출력한다.
난이도

어려움10점 중 8점

유형
문자열, 해시맵, 누적 합, 문자열 매칭
정답자
아직 제출이 없습니다

문제

익준이는 한 프로그램에서 함수 호출이 일어난 함수명이 담긴 함수 호출 리스트를 가지고 있다. 이 리스트에서 서로 다른 원소로 이루어진 함수 호출 구간이 연속하여 가장 많이 반복된 구간을 확인하고 싶다.

예를 들어, \[A,B,C,A,B,C]\[A, B, C, A, B, C]와 같은 함수 호출 리스트가 있으면, \[A,B,C]\[A, B, C] 함수 호출 구간이 총 두 번 반복된 것을 알 수 있다.

그러나 \[A,B,C,B,A,B,C,B]\[A, B, C, B, A, B, C, B]와 같은 함수 호출 리스트의 경우, 구간 \[A,B,C,B]\[A, B, C, B]가 연속하여 반복되지만 함수명 BB가 두 번 포함되어 있으므로 조건을 만족하지 않는다.

입력

첫 번째 줄에 정수 NN이 주어진다. (1≤N≤100,0001 \leq N \leq 100\\,000)

두 번째 줄에 함수 호출 리스트에 속하는 영어 대문자로만 이루어진 문자열 S_iS\_i가 공백을 사이에 두고 NN개 주어진다. (1≤1 \leq ∣S_i∣| S\_i | ≤10\leq 10)

출력

첫 번째 줄에 가장 많이 반복된 함수 호출 구간 중 제일 먼저 나오는 구간의 길이와 반복된 횟수를 출력한다.

두 번째 줄에 해당 함수 호출 구간을 공백을 사이에 두고 출력한다.

단, 여러 번 반복된 구간이 없다면 -1만을 출력한다.

힌트

∣S∣|S|는 문자열 SS의 길이를 의미한다.

예제4

  1. 예제 1

    입력
    6
    O IK O IK JUN JUN
    
    예상 출력
    2 2
    O IK
    
  2. 예제 2

    입력
    15
    A B C B C A B C B C A B C B C
    
    예상 출력
    2 2
    B C
    
  3. 예제 3

    입력
    5
    A A A A A
    
    예상 출력
    1 5
    A
    
  4. 예제 4

    입력
    8
    A B C B A B C B
    
    예상 출력
    -1