[백준] 점프 (1890)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 오른쪽 아래 칸에는 항상 0이 주어진다.
» 출력
가장 왼쪽 위 칸에서 가장 오른쪽 아래 칸으로 문제의 규칙에 맞게 갈 수 있는 경로의 개수를 출력한다. 경로의 개수는 263-1보다 작거나 같다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
4 2 3 3 1 1 2 1 3 1 2 3 1 3 1 1 0 |
3 |
문제 풀이1
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
val N = readLine().toInt()
val map = Array(N) {
readLine().split(" ").map { it.toInt() }.toIntArray()
}
val dp = Array(N) { LongArray(N) }
dp[0][0] = 1
for (y in 0 until N) {
for (x in 0 until N) {
if (y == N - 1 && x == N - 1) continue
if (y + map[y][x] < N) {
dp[y + map[y][x]][x] += dp[y][x]
}
if (x + map[y][x] < N) {
dp[y][x + map[y][x]] += dp[y][x]
}
}
}
println(dp[N - 1][N - 1])
}