class Solution {
public int solution(int m, int n, int[][] puddles) {
int answer = 0;
int[][] map = new int[n][m];
for (int[] puddle : puddles) {
map[puddle[1] - 1][puddle[0] - 1] = -1;
}
map[0][0] = 1;
for (int i = 1; i < n; i++) {
map[i][0] = (map[i][0] == -1) ? 0 : map[i - 1][0];
}
for (int i = 1; i < m; i++) {
map[0][i] = (map[0][i] == -1) ? 0 : map[0][i - 1];
}
for (int i = 1; i < n; i++) {
for (int j = 1; j < m; j++) {
map[i][j] = (map[i][j] != -1) ? (map[i - 1][j] + map[i][j - 1]) % 1000000007 : 0;
}
}
answer = map[n - 1][m - 1];
return answer;
}
}
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges