테트리스 같은 게임

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

요약
세 개의 스택형 열에 순서대로 오는 문자를 넣을 때, 같은 문자가 연속된 그룹 크기별 점수를 최대화하도록 열을 선택하는 방법을 찾는 문제입니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 구현, 그리디
정답자
아직 제출이 없습니다

문제

선영이는 세 개의 빈 열로 하는 테트리스 같은 게임을 한다.

게임 중에는 화면 맨 위에 글자가 하나씩 차례로 나타난다. 글자가 나타날 때마다 선영이는 세 열 중 하나를 고른다. 고른 열이 비어 있으면 그 글자를 열의 맨 아래에 놓고, 비어 있지 않으면 그 열의 맨 위에 쌓인 글자 위에 놓는다.

게임이 끝나면 세 열의 점수를 모두 더한 값이 최종 점수다. 한 열의 점수는 다음 방식으로 계산한다.

먼저 열 안에서 서로 인접한 같은 글자들로 이루어진 그룹을 모두 찾는다. 예를 들어 한 열에 다음과 같이 글자가 쌓여 있다고 하자.

A
A
A
B
C
C
C
A
A

이 열에는 총 4개의 그룹이 있다. 각 그룹의 크기, 즉 그 그룹에 들어 있는 글자 수에 따라 점수를 더하면 그 열의 점수가 된다.

예를 들어 크기가 1인 그룹은 3점, 크기가 2인 그룹은 7점, 크기가 3인 그룹은 5점이라면, 위 열의 점수는 5 + 3 + 5 + 7 = 20점이다.

각 그룹 크기에 대한 점수와 화면에 나타나는 글자의 순서가 주어진다. 선영이가 얻을 수 있는 최대 점수를 구하라.

입력

첫째 줄에 다섯 개의 자연수 B1, B2, B3, B4, B5가 주어진다. i = 1, 2, 3, 4일 때 Bi는 글자 i개로 이루어진 그룹의 점수이고, B5는 글자 5개 이상으로 이루어진 그룹의 점수이다. 다섯 자연수는 모두 100 이하이다.

둘째 줄에는 화면에 나타나는 글자의 개수 N이 주어진다. (1 <= N <= 1000)

셋째 줄에는 화면에 나타나는 N개의 글자가 순서대로 주어진다. 각 글자는 알파벳 대문자이다.

출력

첫째 줄에 선영이가 얻을 수 있는 최대 점수를 출력한다.

예제3

  1. 예제 1

    입력
    5 5 5 5 5
    9
    ABCABCABC
    
    예상 출력
    45
    
  2. 예제 2

    입력
    1 5 1 1 1
    9
    ABCABCABC
    
    예상 출력
    18
    
  3. 예제 3

    입력
    3 3 10 3 3
    17
    AAABBCCCAAACBAAAB
    
    예상 출력
    56