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

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

과일 탕후루

면접 대비

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

요약
1부터 9까지의 숫자로 이루어진 배열에서 서로 다른 값이 두 개 이하인 가장 긴 연속 부분 배열의 길이를 구한다.
난이도

보통10점 중 4점

유형
슬라이딩 윈도우, 투 포인터, 배열, 해시맵
정답자
아직 제출이 없습니다

문제

은하는 긴 막대에 NN개의 과일이 꽂혀있는 과일 탕후루를 만들었습니다. 과일의 각 종류에는 11부터 99까지의 번호가 붙어있고, 앞쪽부터 차례로 S_1,S_2,⋯ ,S_NS\_1, S\_2, \cdots, S\_N번 과일이 꽂혀있습니다. 과일 탕후루를 다 만든 은하가 주문을 다시 확인해보니 과일을 두 종류 이하로 사용해달라는 요청이 있었습니다.

탕후루를 다시 만들 시간이 없었던 은하는, 막대의 앞쪽과 뒤쪽에서 몇 개의 과일을 빼서 두 종류 이하의 과일만 남기기로 했습니다. 앞에서 aa개, 뒤에서 bb개의 과일을 빼면 S_a+1,S_a+2,⋯ ,S_N−b−1,S_N−bS\_{a+1}, S\_{a+2}, \cdots, S\_{N-b-1}, S\_{N-b}번 과일, 총 N−(a+b)N-(a+b)개가 꽂혀있는 탕후루가 됩니다. (0≤a,b;(0 \le a, b; a+b<N)a+b < N)

이렇게 만들 수 있는 과일을 두 종류 이하로 사용한 탕후루 중에서, 과일의 개수가 가장 많은 탕후루의 과일 개수를 구하세요.

입력

첫 줄에 과일의 개수 NN이 주어집니다. (1≤N≤200,000)(1 \le N \le 200\\,000)

둘째 줄에 탕후루에 꽂힌 과일을 의미하는 NN개의 정수 S_1,⋯ ,S_NS\_1, \cdots, S\_N이 공백으로 구분되어 주어집니다. (1≤S_i≤9)(1 \le S\_i \le 9)

출력

문제의 방법대로 만들 수 있는 과일을 두 종류 이하로 사용한 탕후루 중에서, 과일의 개수가 가장 많은 탕후루의 과일 개수를 첫째 줄에 출력하세요.

예제3

  1. 예제 1

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

    입력
    3
    1 1 1
    
    예상 출력
    3
    
  3. 예제 3

    입력
    9
    1 2 3 4 5 6 7 8 9
    
    예상 출력
    2