[Python] 백준 20413 MVP 다이아몬드 (Easy)

지민·2023년 1월 26일
0
post-thumbnail

그리디 유형이니 그리디하게 풀어주심 됩니다~

# PROBLEM - MVP 다이아몬드 (Easy)
# TIER - S2
# NUMBER - 20431
# DATE - 2023-01-26 16:21
# IDEA - 그리디
# money = 과금액 누적 배열이다.
# 등급이 주어질 때,
# 저번달 과금액 + 이번달 더 과금할 금액 = 다음등급 - 1
# 이여야 하므로 money에 (다음등급 과금액 - 1 - 저번달 이미 한 금액) 해주면 
# 이번달 해당 등급을 찍기 위해 과금 해야할 최대 금액이 나온다.

n = int(input())
silver, gold, platinum, diamond = map(int, input().split())
grades = input()
money = [0, 0]

for grade in grades:
    if grade == 'B':
        money.append(silver-1-money[-1])
    if grade == 'S':
        money.append(gold-1-money[-1])
    if grade == 'G':
        money.append(platinum-1-money[-1])
    if grade == 'P':
        money.append(diamond-1-money[-1])
    if grade == 'D':
        money.append(diamond)

print(sum(money))

# 풀이과정
# 0 30 60 90 150
# BSG
# 29(29) + 59(30+29) + 89(30+59)
#   브   +    실     +     골
# answer = 29 + 30 + 59 => 118
# money = [0, 29, 30, 59]
profile
남들 개발 공부할 때 일기 쓰는 사람

0개의 댓글