Skip to content

[Algorithm] MVP 다이아몬드 (Easy) #206

Closed
@hwangJi-dev

Description

@hwangJi-dev

💬 문제

https://www.acmicpc.net/problem/20413


💬 Idea

  • 이전 달의 과금액을 저장해둔다.
  • 현재 달의 등급 최고 과금액에서 이전 달 최고 과금액을 빼서 현재 달의 과금액을 산정한다.
  • 이달의 MVP 산정 등급이 D일 경우에는 최고 금액인 다이아몬드 등급 기준액까지만 과금할 수 있으므로 최대 D 기준액만큼 과금한 것으로 판단한다.

💬 풀이

import Foundation
 
func solution20413() {
    let _ = Int(readLine()!)!
    let money = readLine()!.components(separatedBy: .whitespaces).map({ Int($0)! })
    let tier = Array(readLine()!).map({ String($0) })
    var moneyDict: [String: Int] = ["B": 0, "S": 0, "G": 0, "P": 0, "D": 0]
    
    moneyDict["B"] = money[0] - 1
    moneyDict["S"] = money[1] - 1
    moneyDict["G"] = money[2] - 1
    moneyDict["P"] = money[3] - 1
    moneyDict["D"] = money[3]
    
    var sumMoney = 0
    var lastMoney = 0
    
    for i in tier {
        let tierStandard = moneyDict[i]!
        var currentMoney = tierStandard - lastMoney
        if i == "D" {
            currentMoney = moneyDict[i]!
        }
        lastMoney = currentMoney
        sumMoney += currentMoney
    }
    
    print(sumMoney)
}

소요시간 : 36분

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions