1) 일단 기존의 좌표체계가 뒤집어졌다.
이것을 염두에 두고 풀어야한다.
우리의 좌표체계에 맞게 설계해야 한다.
: 학교의 위치가 (4,3) 이라고 하는데, 우리의 좌표체계로는 저 부분은 (3,4)
일 수 밖에 없다.
2) 놓친점으로는 부등호처리를 못해줬다는 점...
: 반복문 조건 처리를 못해줬다.
생각을 많이 하도록...
3) 문제에서 최소 경로의 수를 구하는 것이고, 오른쪽, 아래쪽으로만 이동이 가능하다고 하므로
dp[x][y] = dp[x - 1][y] + dp[x][y - 1]을 생각해낼 수 있다.
4) 웅덩이 처리를 어떻게 할 것이냐?
: 웅덩이는 초기값에서 정해지므로 puddles를 보고 설정해야 한다.
여기서 우리의 좌표체계대로 설정해야 한다.
#include <string>
#include <vector>
using namespace std;
int solution(int m, int n, vector<vector<int>> puddles) {
int answer = 0;
vector<vector<int>>dp(n + 1, vector<int>(m + 1,0));
for(const auto i : puddles)
{
dp[i[1]][i[0]] = -1;
}
dp[1][0] = 1;
//0904 : 놓친점 - 부등호...
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
if(dp[i][j] == -1)
dp[i][j] = 0;
else
dp[i][j] = (dp[i - 1][j] + dp[i][j -1]) % 1000000007;
}
}
answer = dp[n][m];
return answer;
}