상세 컨텐츠

본문 제목

등굣길 (동적계획법(Dynamic Programming))

프로그래머스 코딩테스트 풀이

by 발발개발 2022. 8. 10. 10:15

본문

원본 : https://school.programmers.co.kr/learn/courses/30/lessons/42898

 

코딩테스트 연습 - 등굣길

계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m =

school.programmers.co.kr

 

풀이

class Solution {
    public int solution(int m, int n, int[][] puddles) {
        int[][] dp = new int[n + 1][m + 1];

        for (int[] puddle : puddles) {
            dp[puddle[1]][puddle[0]] = -1;
        }

        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                if (i == 1 && j == 1) {
                    dp[i][j] = 1;
                    continue;
                }

                if (dp[i][j] != -1) {
                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1];

                    if (dp[i - 1][j] == -1) {
                        dp[i][j]++;
                    }

                    if (dp[i][j - 1] == -1) {
                        dp[i][j]++;
                    }

                    dp[i][j] %= 1000000007;
                }
            }
        }

        return dp[n][m];
    }
}

관련글 더보기

댓글 영역