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

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

2020 더 만들기!

면접 대비

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

요약
0, 1, 2로 이루어진 문자열에서 서로 겹치지 않는 부분수열 2020의 최대 개수를 구한다.
난이도

보통10점 중 7점

유형
그리디, 문자열, 동적 계획법, 이분 탐색
정답자
아직 제출이 없습니다

문제

Byteazar는 '0', '1', '2'로만 이루어진 길이 nn의 문자열 SS (s1…sns_1 \dots s_n)를 받았고, 여기서 20202020과 같은 서로 겹치지 않는 부분수열을 최대한 많이 고르려고 한다.

형식적으로 Byteazar는 다음 조건을 만족하는 kk개의 네 쌍 (a1,b1,c1,d1),…,(ak,bk,ck,dk)(a_1, b_1, c_1, d_1), \dots, (a_k, b_k, c_k, d_k)를 찾으려 한다.

  • 1≤ai<bi<ci<di≤n1 \leq a_i < b_i < c_i < d_i \leq n
  • saisbiscisdi=2020s_{a_i} s_{b_i} s_{c_i} s_{d_i} = 2020
  • i≠ji \neq j일 때 {ai,bi,ci,di}∩{aj,bj,cj,dj}=∅\{a_i, b_i, c_i, d_i\} \cap \{a_j, b_j, c_j, d_j\} = \emptyset

kk의 최댓값을 구하라.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 파일의 끝에서 끝난다.

각 테스트 케이스의 첫째 줄에는 정수 nn이 주어진다. (1≤n≤1051 \le n \le 10^5) 둘째 줄에는 문자열 SS (s1…sns_1 \dots s_n)가 주어진다. (si∈{0,1,2}s_i \in \{0, 1, 2\}) 모든 테스트 케이스에서 nn의 합은 10610^6을 넘지 않는다.

출력

각 테스트 케이스마다 결과를 나타내는 정수를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    4
    2222
    7
    2101210
    9
    122002200
    
    예상 출력
    0
    1
    2