💬 문제
https://www.acmicpc.net/problem/20413
💬 Idea
- 이전 달의 과금액을 저장해둔다.
- 현재 달의 등급 최고 과금액에서 이전 달 최고 과금액을 빼서 현재 달의 과금액을 산정한다.
- 이달의 MVP 산정 등급이 D일 경우에는 최고 금액인 다이아몬드 등급 기준액까지만 과금할 수 있으므로 최대 D 기준액만큼 과금한 것으로 판단한다.
💬 풀이
import Foundation
func solution20413(){let _ =Int(readLine()!)!
letmoney=readLine()!.components(separatedBy:.whitespaces).map({Int($0)! })lettier=Array(readLine()!).map({String($0)})varmoneyDict:[String:Int]=["B":0,"S":0,"G":0,"P":0,"D":0]moneyDict["B"]=money[0]-1moneyDict["S"]=money[1]-1moneyDict["G"]=money[2]-1moneyDict["P"]=money[3]-1moneyDict["D"]=money[3]varsumMoney=0varlastMoney=0foriin tier {lettierStandard=moneyDict[i]!
varcurrentMoney= tierStandard - lastMoney
if i =="D"{
currentMoney =moneyDict[i]!
}
lastMoney = currentMoney
sumMoney += currentMoney
}print(sumMoney)}소요시간 : 36분
💬 문제https://www.acmicpc.net/problem/20413
💬 Idea💬 풀이소요시간: 36분