백준1890: 점프
문제
https://www.acmicpc.net/problem/1890
문제 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
long[][] dp = new long[N + 1][N + 1];
dp[1][1] = 1;
// 입력된 N x N 크기의 이동 횟수 배열을 반복하면서 처리
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
int move = sc.nextInt();
// 현재 위치에서의 dp 값이 1 이상이고 이동 횟수가 0이 아닌 경우에 처리
if (dp[i][j] >= 1 && move != 0) {
// 오른쪽으로 이동 가능한 경우{
if (j + move <= N) {
dp[i][j + move] += dp[i][j];
}
// 아래쪽으로 이동 가능한 경우
if (i + move <= N) {
dp[i + move][j] += dp[i][j];
}
}
}
}
System.out.println(dp[N][N]);
}
}
댓글남기기