[프로그래머스] 코딩테스트 연습 - 동적계획법(Dynamic Programming) Level 3 등굣길

uoahy·2021년 9월 23일
0

Solution.java

class Solution {
    public int solution(int m, int n, int[][] puddles) {
        int answer = 0;
        
        int[][] map = new int[n][m];
        
        for (int[] puddle : puddles) {
            map[puddle[1] - 1][puddle[0] - 1] = -1;
        }
        
        map[0][0] = 1;
        
        for (int i = 1; i < n; i++) {
            map[i][0] = (map[i][0] == -1) ? 0 : map[i - 1][0];
        }
        
        for (int i = 1; i < m; i++) {
            map[0][i] = (map[0][i] == -1) ? 0 : map[0][i - 1];
        }
        
        for (int i = 1; i < n; i++) {
            for (int j = 1; j < m; j++) {
                map[i][j] = (map[i][j] != -1) ? (map[i - 1][j] + map[i][j - 1]) % 1000000007 : 0;
            }
        }
        
        answer = map[n - 1][m - 1];
        
        return answer;
    }
}

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

0개의 댓글