프로그래머스 등굣길

김준영·2023년 4월 24일
0

코딩테스트

목록 보기
17/22

public static int solution(int m, int n, int[][] puddles) {
        // map 사이즈를 한칸 더 늘려서 선언
        map = new int[n + 1][m + 1]; 
        
        // 물에 잠긴 지역을 map 에 -1로 표시
        for (int i = 0; i < puddles.length; i++) {
            map[puddles[i][1]][puddles[i][0]] = -1;
        }
        // 시작 값은 1로
        map[1][1] = 1;

        // 현 좌표로 올 수 있는 최단 거리는 = 현 좌표의 위 혹은 왼쪽 값이다.
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                if(map[i][j] == -1) continue; // 웅덩이를 만날경우 패스
                if(map[i-1][j] > 0) map[i][j] += map[i - 1][j] % mod; // 위쪽 값이 0보다 클 경우 -> 위쪽 값 더함
                if(map[i][j-1] > 0) map[i][j] += map[i][j-1] % mod; // 왼쪽 값이 0보다 클 경우 -> 왼쪽 값 더함
            }
        }

        return map[n][m] % mod;

    }

profile
ㅎㅎ

0개의 댓글