코딩테스트 연습 - 등굣길
계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m =
programmers.co.kr
dp로 풀 수 있는 문제이다.
그런데 하나 주의할점이
대부분 문제는 행의 갯수, 열의 갯수 순으로 주어지는 경우가 많은데
이 문제에서는 m이 열의 갯수, n이 행의 갯수이므로 잘 생각해서 계산해야한다.
// [프로그래머스] 등굣길 (Java) class Solution { static int[][] dp; public int solution(int m, int n, int[][] puddles) { int answer = 0; dp = new int[n][m]; for(int i = 0; i < puddles.length; i++){ int y = puddles[i][0] - 1; int x = puddles[i][1] - 1; dp[x][y] = -1; } dp[0][0] = 1; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ if(dp[i][j] == -1) { continue; } if(j != 0){ if(dp[i][j - 1] != -1){ dp[i][j] += dp[i][j - 1]; } } if(i != 0){ if(dp[i - 1][j] != -1){ dp[i][j] += dp[i - 1][j]; } } dp[i][j] %= 1000000007; } } answer = dp[n - 1][m - 1] % 1000000007; return answer; } }
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.