본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 1890 점프

by 까망 하르방 2021. 2. 23.
반응형

출처:  https://www.acmicpc.net/problem/1890

 Input 

4

2 3 3 1

1 2 1 3

1 2 3 1

3 1 1 0

 

 Output 

3

▶ 동적계획법(Dynamic Programming, DP) 

 

동적계획법(Dynamic Programming, DP)

동적 계획법(Dynamic Programming)은 큰 의미에서 분할 정복과 같은 접근 방식을 의미한다. 처음 주어진 문제를 더 작은 문제들로 나눈 뒤 각 조각의 답을 계산하고, 이 답들로부터 원래 문제에 대한

zoosso.tistory.com

[이동 방식] 

- 아래쪽 혹은 오른쪽으로 이동할 수 있습니다.

- 이동거리는 각 칸에 적혀있는 숫자만큼 이동해야 합니다.

 

[구현]

이동 거리와 방향 특성을 이용.

dp[i][j] = 해당 지점에 도달(방문)될 수 있는 모든 경로수

[Test Case 분석]


import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
 
class Vertex{
    int x, y;
    int point;
     
    public Vertex(int x, int y, int p) {
        this.x = x;
        this.y = y;
        point = p;
    }
}
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         
        int N = Integer.parseInt(sc.next());
         
        int[][] arr = new int[N+1][N+1];
        long[][] dp = new long[N+1][N+1];
         
        for(int i=1; i<=N; i++) {
            for(int j=1; j<=N; j++) {
                arr[i][j] = Integer.parseInt(sc.next());
            }
        }
         
        dp[1][1] = 1;
         
        int[] rowMove = {0, 0};
        int[] colMove = {0, 0};
         
        for(int i=1; i<=N; i++) {
            for(int j=1; j<=N; j++) {
                if(dp[i][j] > 0 && !(i==N && j==N)) {
                    rowMove[1] = arr[i][j];
                    colMove[0] = arr[i][j];
                     
                    for(int k=0; k<2; k++) {
                         
                        int next_x = i + rowMove[k];
                        int next_y = j + colMove[k];
                         
                        if(next_x > 0 && next_y > 0 && next_x <= N && next_y <= N) {
                            dp[next_x][next_y] += dp[i][j];
                        }
                    }
                }
            }
        }
        // 정답 출력
        System.out.println(dp[N][N]);
    }
}

 

반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 1463 1로 만들기  (0) 2021.02.23
[BOJ] 백준 11048 이동하기  (0) 2021.02.23
[BOJ] 백준 11051 이항 계수 2  (0) 2021.02.23
[BOJ] 백준 11050 이항 계수 1  (0) 2021.02.23
[BOJ] 백준 1932 정수 삼각형  (0) 2021.02.23

댓글