programmers_등굣길_java

2023. 2. 28. 17:08Algorithm/Programmers

728x90

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

 

코딩테스트 연습 - 등굣길

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

school.programmers.co.kr

class Solution {
    private final int mod = 1000000007;
    public int solution(int m, int n, int[][] puddles) {
        int answer = 0;
        
        int[][] dp = new int[n+1][m+1];        
        
        int puddlesSize = puddles.length;
        for(int i = 0; i<puddlesSize; i++){
            if(puddles[i].length > 0){
                int y = puddles[i][1];
                int x = puddles[i][0];
                dp[y][x] = -1;
            }            
        }
        
        for(int i = 1; i< n+1; i++){
            for(int j = 1; j<m+1; j++){
                if(dp[i][j] == -1) continue;
                if(i==1 && j== 1){
                    dp[i][j] = 1;
                    continue;
                }
                if(dp[i][j-1] != -1){
                    dp[i][j] = (dp[i][j] + dp[i][j-1])%mod;
                }
                if(dp[i-1][j] != -1){                    
                    dp[i][j] = (dp[i-1][j] + dp[i][j])%mod;
                }                
            }
        }
        
        answer = dp[n][m];
        return answer;
    }
    
    public void printArr(long[][] map){
        int height = map.length;
        int width = map[0].length;
        for(int i = 0; i< height; i++){
            for(int j = 0; j<width; j++){
                System.out.print(map[i][j] + " ");
            }
            System.out.println();
        }
         System.out.println();
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

programmers_숫자 게임_java  (0) 2023.03.01
programmers_단속카메라_java  (0) 2023.03.01
programmers_야근 지수_java  (0) 2023.02.28
programmers_최고의 집합_java  (0) 2023.02.28
programmers_단어 변환_java  (0) 2023.02.27