근수

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

요약
숫자 문자열에서 길이 k(2 이상)인 연속된 2의 구간마다 k점을 더하되, 겹치는 구간도 모두 세어 총점을 구한다.
난이도

보통10점 중 4점

유형
문자열, 수학, 구현
정답자
아직 제출이 없습니다

문제

요즘 K512에서는 '근수 게임'이라는 놀이가 엄청난 인기를 끌고 있다. 근수 게임은 주어진 문자열에 대하여 근수 점수를 빨리 계산하여 먼저 외치는 게임이다. 근수 점수는 주어진 문자열에 있는 모든 연속된 부분 문자열에 대해 다음과 같이 점수를 더한 것으로 계산된다.

  1. 부분 문자열 22는 '근수'로 간주하여 등장할 때마다 11점을 더한다.
  2. 부분 문자열 2222는 '근근수'로 간주하여 등장할 때마다 22점을 더한다.
  3. 연속된 kk (k≥3)(k \ge 3)개의 22로 이루어진 부분 문자열 22…222 \ldots 2는 '근근...근수'로 간주하여 등장할 때마다 kk점을 더한다.
  4. 그 외 부분 문자열은 00점을 더한다.

이때 '근근...근수'끼리는 서로 겹칠 수 있다는 점에 유의해야 한다. 예를 들어 112223223112223223이라는 문자열은 '근수' 55개, '근근수' 33개, '근근근수' 11개가 등장해 (1×5)+(2×3)+(3×1)=14(1\times5) + (2\times3) + (3\times1) = 14점의 근수 점수를 가진다.

근수는 자신의 이름을 딴 근수 게임의 최강자 자리를 차지하기 위해 문자열을 입력했을 때, 그 문자열의 근수 점수를 빠르게 구해주는 프로그램을 작성하려고 한다. 근수를 도와 프로그램을 작성해 보자.

입력

첫 번째 줄에 문자열의 길이 N(1≤N≤106)N(1 \le N \le 10^6)가 주어진다.

두 번째 줄에는 길이 NN의 문자열 SS가 주어진다. 문자열은 모두 숫자로 이루어져 있으며, 00으로 시작할 수 있다.

출력

문자열 SS의 근수 점수를 출력하여라.

예제1

  1. 예제 1

    입력
    9
    112223223
    
    예상 출력
    14