문제

웅덩이를 피해 학교에 가는 최단 거리의 경로 개수를 구하기

풀이

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]

알게된 점