IT/알고리즘

[백준] 11048번 이동하기

남갯 2025. 1. 6. 21:18
728x90
SMALL

N x M으로 dp로 문제 구하는 방법

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

fun main() = with(Scanner(System.`in`)) {
    val x = nextInt()
    val y = nextInt()
    val array: Array<Array<Int>> = Array(x) { Array(y) { 0 } }
    val dp: Array<Array<Int>> = Array(x) { Array(y) { 0 } }
    for (i in 0 until x) {
        for (j in 0 until y) {
            val value = nextInt()
            array[i][j] = value
            dp[i][j] = value
        }
    }

    for (i in 0 until x) {
        for (j in 0 until y) {
            if (i + 1 < x) {
                dp[i + 1][j] = max(dp[i][j] + array[i + 1][j], dp[i + 1][j])
            }
            if (j + 1 < y) {
                dp[i][j + 1] = max(dp[i][j] + array[i][j + 1], dp[i][j + 1])
            }
        }
    }

    println(dp[x - 1][y - 1])
}
728x90
LIST