[백준/코틀린] 1149번: RGB거리
실버 1
링크
풀이
dp[i][C]: i번째 집을 색 C로 칠했을 때의 최소 누적 비용
i번째 집을 색 C로 칠하려면,
i-1번째 집은 반드시 C가 아닌 두 색 중 하나여야 합니다.
따라서 dp[i][C]는
입력으로 받은 i번째 집의 색칠 비용에
dp[i−1][~C] 중 최솟값을 더한 값으로 계산됩니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const val R = 0
const val G = 1
const val B = 2
fun main() {
val n = readln().toInt()
val dp = List(n + 1) { MutableList(3) { 0 } }
for (i in 1..n) {
val (r, g, b) = readln().split(" ").map { it.toInt() }
dp[i][R] = r + minOf(dp[i - 1][G], dp[i - 1][B])
dp[i][G] = g + minOf(dp[i - 1][R], dp[i - 1][B])
dp[i][B] = b + minOf(dp[i - 1][R], dp[i - 1][G])
}
println(dp[n].minOrNull())
}
This post is licensed under CC BY 4.0 by the author.