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

Seoyoung Lee·2023년 3월 22일
0

알고리즘

목록 보기
100/104
post-thumbnail
let grade = ["B": 0, "S": 1, "G": 2, "P": 3, "D": 4]
let N = Int(readLine()!)!
var answer = 0

var money = [0] + readLine()!.split(separator: " ").map { Int(String($0))! }
// 각 등급 최대 가능한 과금액 저장
for i in 0..<4 {
    money[i] = money[i + 1] - 1
}

let input = Array(readLine()!)
var maxMoney = Array(repeating: 0, count: N + 1) // 상민이 각 달 최대 과금액 저장

for i in 1...N {
    let nowGrade = grade[String(input[i - 1])]!
    maxMoney[i] = nowGrade != 4 ? money[nowGrade] - maxMoney[i - 1] : money[nowGrade]
    answer += maxMoney[i]
}

print(answer)

다이아몬드 등급을 제외한 모든 등급마다 최대로 과금 가능한 금액 (다음 등급 - 1)을 저장한다.

그리고 모든 달마다 현재 등급 - 이전 달 최대 과금 금액 을 계산하고, 이 값을 정답 변수의 값에 더해준다.

profile
나의 내일은 파래 🐳

0개의 댓글