만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

세 개의 탑

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

요약
B, S, C 세 가지 색으로 이루어진 블록 문자열에서, 단색 탑을 세 개 이하로 쌓아 모두 사용할 수 있고 탑의 높이가 서로 다른 가장 긴 연속 구간의 길이를 구합니다.
난이도

보통10점 중 6점

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

문제

Bythony는 게임을 좋아한다. 그의 방에는 색이 칠해진 블록 nn개가 한 줄로 놓여 있다. 각 블록은 흰색, 회색, 검은색 중 하나이다. Bythony는 줄에서 연속된 구간을 하나 골라, 그 구간의 블록으로 탑을 쌓으려 한다.

각 탑은 한 가지 색의 블록으로만 이루어지며, 탑의 색은 서로 달라야 한다. 따라서 최대 세 개의 탑을 쌓을 수 있다. 탑의 높이, 즉 탑을 이루는 블록의 개수도 서로 달라야 한다. Bythony는 고른 구간의 블록을 모두 사용해야 한다. 이 조건을 만족하는 가장 긴 연속 구간의 길이를 구하는 프로그램을 작성하라.

입력

첫 줄에 블록의 개수 nn (1≤n≤1 000 0001 \le n \le 1\,000\,000)이 주어진다. 둘째 줄에는 길이 nn의 문자열 a1a2…ana_1a_2 \ldots a_n이 주어진다. 각 aia_i는 B, S, C 중 하나이며, ii번째 블록의 색을 나타낸다. B는 흰색, S는 회색, C는 검은색이다. 이 글자들은 폴란드어 색 이름 biały, szary, czarny에서 가져온 것이다.

배점의 30%에 해당하는 테스트에서는 n≤2500n \le 2500이다.

출력

조건을 만족하는 가장 긴 구간에 포함된 블록의 개수를 한 줄에 출력한다.

힌트

Bythony는 블록 6개로 이루어진 구간 BSSBCS를 고를 수 있다. 이 구간으로 높이 3의 회색 탑, 높이 2의 흰색 탑, 높이 1의 검은색 탑을 만들 수 있다.

예제1

  1. 예제 1

    입력
    9
    CBBSSBCSC
    
    예상 출력
    6