解法1:DP
考え方
dp[i][j] = i個目まで決めて,capslockON(j=1), OFF(j=0)のときの最小値回答例
X, Y, Z = map(int, input().split()) S = input() dp = [[0]*2 for _ in range(len(S) + 1)] dp[0][1] = 1 << 60 for i in range(len(S)): s = S[i] if s == 'a': dp[i + 1][0] = min(dp[i][0] + X, dp[i][1] + Z + X) dp[i + 1][1] = min(dp[i][0] + Z + Y, dp[i][1] + Y) elif s == 'A': dp[i + 1][0] = min(dp[i][0] + Y, dp[i][1] + Z + Y) dp[i + 1][1] = min(dp[i][0] + Z + X, dp[i][1] + X) print(min(dp[-1]))