728x90
SMALL
https://www.acmicpc.net/problem/1149
fun main() = with(Scanner(System.`in`)) {
val size = nextInt()
val count = Array<Int>(size * 3) { 0 }
for (i in count.indices) {
count[i] = nextInt()
}
val dp = Array<Int>(count.size) { Int.MAX_VALUE }
for (i in 0..2) {
dp[i] = count[i]
}
for (i in 0 until size - 1) {
for (j in 0..2) {
if (j == 0) {
dp[(i + 1) * 3 + 1] =
min(dp[(i + 1) * 3 + 1], dp[(i) * 3] + count[(i + 1) * 3 + 1])
dp[(i + 1) * 3 + 2] =
min(dp[(i + 1) * 3 + 2], dp[(i) * 3] + count[(i + 1) * 3 + 2])
}
if (j == 1) {
dp[(i + 1) * 3 + 0] =
min(dp[(i + 1) * 3 + 0], dp[(i) * 3 + 1] + count[(i + 1) * 3 + 0])
dp[(i + 1) * 3 + 2] =
min(dp[(i + 1) * 3 + 2], dp[(i) * 3 + 1] + count[(i + 1) * 3 + 2])
}
if (j == 2) {
dp[(i + 1) * 3 + 0] = min(dp[(i + 1) * 3 + 0], dp[(i) * 3 + 2] + count[(i + 1) * 3 + 0])
dp[(i + 1) * 3 + 1] = min(dp[(i + 1) * 3 + 1], dp[(i) * 3 + 2] + count[(i + 1) * 3 + 1])
}
}
}
println(dp.takeLast(3).min())
}
728x90
LIST
'IT > 알고리즘' 카테고리의 다른 글
[백준] 적록 색약 (1) | 2024.12.04 |
---|---|
[백준] 소수 경로 (1) | 2024.12.02 |
[백준] 카드구매하기 (0) | 2024.11.21 |
[백준] 1,2,3 더하기 (0) | 2024.11.21 |
[백준] 1로만들기 (0) | 2024.11.18 |