문제 링크

요약

최종

class Solution {
public:
	int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
		auto &g = obstacleGrid; // Alias
		int m = g.size();
		int n = g[0].size();
 
		// Never
		if (g[0][0] || g[m - 1][n - 1]) {
			return 0;
		}
 
		// Top
		g[0][0] = 1;
		for (int ni = 1; ni < n; ni++) {
			g[0][ni] = g[0][ni] ? 0 : g[0][ni - 1];
		}
 
		// Inner
		for (int mi = 1; mi < m; mi++) {
			g[mi][0] = g[mi][0] ? 0 : g[mi - 1][0];
 
			for (int ni = 1; ni < n; ni++) {
				g[mi][ni] = g[mi][ni] ? 0 : g[mi][ni - 1] + g[mi - 1][ni];
			}
		}
 
		return g[m - 1][n - 1];
	}
};