해당 알고리즘 자료는 제가 직접 푼 것도 있지만 다른 분들의 풀이과의 비교를 통해 더 나은 알고리즘을 공부하기 위해 정리한 것들입니다.
https://programmers.co.kr/learn/courses/30/lessons/42898
풀이 : DP를 이용한 알고리즘
class Solution {
public int solution(int m, int n, int[][] puddles) {
int [][] dp = new int [n+1][m+1];
for(int [] i : puddles) dp[i[1]][i[0]] = -1;
dp[1][1] = 1;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if(dp[j][i] == -1) {
dp[j][i] = 0;
continue;
}
if(i != 1) dp[j][i] += dp[j][i-1] % 1000000007;
if(j != 1) dp[j][i] += dp[j-1][i] % 1000000007;
}
}
return dp[n][m] % 1000000007;
}
}