PIN과 남은 소문자 패턴이 주어질 때, 글자 값의 합이 PIN 길이가 되도록 대문자를 끼워 넣어 추출한 숫자 합의 최댓값을 구한다.
보통6동적 계획법그리디아직 제출이 없습니다시간 제한1초메모리 제한512 MBActuarial Commerce Merchant 은행은 로그인할 때마다 대문자와 소문자로만 이루어진 패턴 단어를 하나 준다. 사용자는 이 패턴 단어로 자기 PIN에서 숫자를 뽑아 더한다.
패턴 단어의 각 글자는 숫자를 뜻한다. a(또는 A)는 1, b(또는 B)는 2, 같은 방식으로 z(또는 Z)는 26이다. 소문자는 PIN에서 뽑아낼 숫자의 개수이고, 대문자는 건너뛸 숫자의 개수이다. 글자를 왼쪽에서 오른쪽으로 차례대로 처리하면 뽑아낸 숫자가 순서대로 나오고, 그 합이 웹 페이지 입력란에 적을 값이다.
PIN이 1093373이고 패턴 단어가 aBcA라고 하자. 숫자 한 개(1)를 뽑고, 두 개(09)를 건너뛰고, 세 개(337)를 뽑고, 마지막으로 한 개(3)를 건너뛴다. 뽑은 숫자는 1, 3, 3, 7이므로 입력란에는 14를 적는다.
PIN은 최대 256자리이고, 은행은 글자를 숫자로 읽었을 때 그 합이 PIN의 길이와 같은 패턴 단어만 발급한다.
누군가 은행 데이터베이스에 침입해 모든 패턴 단어에서 대문자를 전부 지워 버렸다. 남은 것은 소문자뿐이고 순서는 그대로다. PIN과 그 PIN의 패턴 단어에서 남은 부분이 주어질 때, 위 절차가 만들어 낼 수 있었던 가장 큰 값을 구하라. 남은 단어의 어느 위치에든 대문자를 원하는 개수만큼 넣을 수 있지만, 글자 값의 합은 PIN의 길이와 같아야 한다. 소문자의 순서는 바꿀 수 없다.
입력은 테스트 케이스 하나로 이루어진다.
첫째 줄에 n자리 PIN이 주어진다 (6≤n≤256).
둘째 줄에 패턴 단어에서 남은 부분이 주어진다. 소문자 m개로 이루어져 있다 (0≤m≤n). m=0이면 이 줄은 빈 줄이다.
뽑아낸 숫자의 합이 가장 클 때 그 합을 출력한다. 올바른 패턴 단어가 적어도 하나 존재한다.