https://leetcode.com/problems/unique-paths-ii/
장애물과 빈 공간이 있는 보드에서 왼쪽 상단에 위치한 로봇이 오른쪽 하단에 도달할 수 있는 unique한 경우의 수 반환하기
수학에서 unique한 경로 경우의 수 찾는 방식이랑 같다.
public class Solution {
public int UniquePathsWithObstacles(int[][] obstacleGrid) {
int m = obstacleGrid.Length;
int n = obstacleGrid[0].Length;
int[][] board = new int[m][];
for (int i = 0; i< m; i++)
{
board[i] = new int[n];
}
for (int i = 0; i < m; i++)
{
if (obstacleGrid[i][0] == 1)
{
break;
}
board[i][0] = 1;
}
for (int i = 0; i < n; i++)
{
if (obstacleGrid[0][i] == 1)
{
break;
}
board[0][i] = 1;
}
for (int i = 1; i < m; i++)
{
for (int j = 1; j < n; j++)
{
board[i][j] = obstacleGrid[i][j] == 1 ? 0 : board[i][j-1] + board[i-1][j];
}
}
return board[m-1][n-1];
}
}