n = int(input())
s, g, p, d = list(map(int, input().split()))
tear = input()
sum = 0
prev = 0
for i in range(n):
if tear[i] == 'B':
sum += s - 1 - prev
prev = s - 1 - prev
elif tear[i] == 'S':
sum += g - 1 - prev
prev = g - 1 - prev
elif tear[i] == 'G':
sum += p - 1 - prev
prev = p - 1 - prev
elif tear[i] == 'P':
sum += d - 1 - prev
prev = d - 1 - prev
elif tear[i] == 'D':
sum += d
prev = d
print(sum)
입력 조건에 mvp 등급이 떨어질 경우는 없기때문에 떨어지는 경우는 빼고 코드를 짰다.
2개월 동안 합친 과금액이 그 달의 mvp 등급이기 때문에
전에 달에 과금액 + 이번달에 과금액이 현재 달에 mvp등급
즉 BS 이고 30 60 일경우에는
1번째 달에는 29만원 2번째 달에는 전에 과금액 29(prev) + x = 59 , x = 30 이다.
골드가 60만원 이기때문에 1만원을 뺀 59만원이 2달 과금액에서 합친 최대 금액이다.
그래서 prev , 전 달에 과금액을 기록하면서 현재 mvp등급과 비교하면 최대 과금액을 알 수 있다.
문제를 제대로 읽지않아 다이아 일 경우에는 최대 금액을 몰라서 다이아 에서도
prev를 사용해서 틀렸었는데 문제를 다시 읽으니 해결되었다.