백준 20413번 MVP 다이아몬드 (Easy)

박슬빈·2021년 9월 9일
0

알고리즘

목록 보기
9/40

문제

입력 , 출력

solution

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를 사용해서 틀렸었는데 문제를 다시 읽으니 해결되었다.

profile
이것저것합니다

0개의 댓글