웅덩이를 피해 학교에 가는 최단 거리의 경로 개수를 구하기
from collections import deque
def solution(m,n, puddles):
dist = [[0]*m for _ in range(n)]
# 시작점
dist[0][0] = 1
# 물웅덩이
for x, y in puddles:
dist[y-1][x-1] = -1
# queue 설정
queue = deque([(0,0)])
# 유효한지 확인하기
def isValid(x,y):
if 0<=x<m and 0<=y<n and dist[y][x] != -1:
return True
return False
# 돌기
while queue:
x, y = queue.popleft()
#물웅덩이 피해가기
if dist[y][x] == -1 :
continue
for dx, dy in [(0,1), (1,0)]:
nx, ny = x+ dx, y+ dy
if isValid(nx,ny):
if dist[ny][nx] == 0:
queue.append((nx,ny))
dist[ny][nx] += dist[y][x]
dist[ny][nx] %= 1000000007
return dist[n-1][m-1]