집에서 학교까지의 물웅덩이를 피하며 이동하려고 할 때 아래 또는 오른쪽으로만 이동하며 학교에 도착하는 최단 경로의 개수를 구하는 문제입니다.
def solution(m, n, puddles):
road = [[0 for _ in range(m)] for _ in range(n)]
dp = [[0 for _ in range(m)] for _ in range(n)]
move=[[-1, 0], [0, -1]]
for puddle in puddles:
road[puddle[1]-1][puddle[0]-1]=1
dp[0][0]=1
for x in range(n):
for y in range(m):
if road[x][y]==0:
for i in range(2):
prevX, prevY = x+move[i][0], y+move[i][1]
if n > prevX >= 0 and m > prevY >= 0:
dp[x][y]+=dp[prevX][prevY]%1000000007
dp[x][y]%=1000000007
return dp[n-1][m-1]