728x90
반응형
백준 홈페이지 문제와 해설을 풀이한 글입니다.
문제
상민이는 게임 단풍잎 이야기에 과금을 즐겨 한다. 단풍잎 이야기에는 과금액에 따라 혜택을 제공하는 'MVP 등급' 이 존재한다.
MVP 등급은 브론즈(B), 실버(S), 골드(G), 플래티넘(P), 다이아몬드(D) 로 총 다섯 등급이 있으며, 현재 달과 지난달, 즉 현재 달을 포함한 최근 2개월간의 과금액으로 결정된다.
단, 단풍잎이야기에는 과도한 과금을 막기 위해 '최대 과금 한도' 가 있어 한 달에 최대 다이아몬드 등급 기준액 까지만 과금할 수 있으며, 만원 단위로만 과금이 가능하다.
MVP 등급은 해당 달이 끝날 때 계산되어 책정된다.
예를 들어 아래의 표와 같은 등급 기준액을 따르고 1월에 게임을 시작한 상민이가 1월에 30만, 2월에 20만, 3월에 50만원을 과금했다면, 1월(30만원) 과 2월(30만원 + 20만원 = 50만원) 에는 실버 등급, 3월 (20만원 + 50만원 = 70만원) 에는 골드 등급으로 책정된다.
MVP 등급(표기) | 등급 기준액 | 2개월 간의 과금액 |
브론즈(B) | 0 만원 | 0 만원 ~ 29 만원 |
실버(S) | 30 만원 | 30 만원 ~ 59 만원 |
골드(G) | 60 만원 | 60 만원 ~ 89 만원 |
플래티넘(P) | 90 만원 | 90 만원 ~ 149 만원 |
다이아몬드(D) | 150 만원 | 150 만원 이상 |
상민이는 게임을 시작하고 N 개월 동안 수 많은 현금을 과금해왔다. 상민이는 이 사실을 자신의 여자친구에게 철저히 비밀로 하고 있었다.
상민이의 여자친구는 상민이가 게임에 과금하는 것을 굉장히 싫어하기 때문이다.
그러던 어느 날 문제가 발생했다. 상민이의 여자친구에게 N 개월간의 MVP 등급 기록이 유출된 것이다!
상민이의 여자친구는 상민의 과금액을 역추적하기 위해 당신에게 부탁했다.
상민이의 여자친구 : 상민이가 게임에 최대 얼마나 과금한 건지 알려줘.
둘 사이에 어떤 일이 벌어질지는 모르겠지만, 당신은 상민이의 여자친구를 위한 프로그램을 작성한다.
입력
첫 번째 줄에는 게임을 플레이 한 개월 수 N 이 주어진다.
두 번째 줄에는 실버, 골드, 플래티넘, 다이아몬드 등급 기준액 s, g, p, d가 만원 단위로 순서대로 주어진다. 브론즈 등급 기준액은 0 원이다.
세 번째 줄에는 게임을 플레이 한 첫 번째 달부터 N 번째 달까지의 MVP 등급이 등급 표기대로 주어진다. 기록과 같은 MVP 등급 달성이 불가능한 경우는 주어지지 않는다.
출력
입력된 MVP 등급을 달성하기 위한 최대 누적 과금액을 만원 단위로 출력한다.
제한
1 ≤ N ≤ 36
0 < s < g < p < d ≤ 500
예제 입력 1 | 예제 출력 1 |
3 30 60 90 150 BSG |
118 |
예제 입력 2 | 예제 출력 2 |
10 257 269 367 500 BSGGGGPPDD |
2499 |
# n 을 입력 받는다.
n = int(input())
# 4 가지 등급 구분 점수를 입력 받는다.
s, g, p, d = list(map(int, input().split()))
# 등급
rating = input()
# 최종 값
result = 0
# 맨처음 값
prevNum = 0
for i in range(n):
if rating[i] == 'B':
result += (s-1) - prevNum
prevNum = (s-1) - prevNum
if rating[i] == 'S':
result += (g-1) - prevNum
prevNum = (g-1) - prevNum
if rating[i] == 'G':
result += (p-1) - prevNum
prevNum = (p-1) - prevNum
if rating[i] == 'P':
result += (d-1) - prevNum
prevNum = (d-1) - prevNum
if rating[i] == 'D':
result += d
prevNum = d
print(result)
글을 마치며
이 문제는 금융 은행 코딩테스트 출시 문제 느낌과 비슷하다고 본 기억이 있다.
구현에 기본적인 문제라고 생각하며, 해당 문제는 1번 문제로 나온 만큼 기본에 충실하면 풀 수 있는 내용이다.
문제를 풀면서 가장 고민한 부분은 변수 명에 대한 내용과 조금 더 간단하게 구현을 하고자 하는 목표를 두었다.
단순 IF 문으로 간단하게 풀 수 있고, 독자 분들도 쉽게 풀 수 있을 것이라 생각한다.
728x90
반응형
'개발 > Coding Test - Python' 카테고리의 다른 글
[Python] 이것이 코딩테스트다 with 파이썬 - 이진 탐색 - 부품 찾기 (0) | 2023.02.06 |
---|---|
[Python] 백준 9012 괄호 - 구현 (0) | 2023.02.03 |
[Python] 백준 2606 안전 영역 - DFS/BFS (BFS) (0) | 2023.02.01 |
[Python] 이것이 코딩테스트다 with 파이썬 - 이진 탐색 (0) | 2023.01.31 |
[Python] 이것이 코딩테스트다 with 파이썬 - 정렬 - 두 배열의 원소 교체 (0) | 2023.01.29 |