본문 바로가기
스터디/알고리즘

[2178] 미로 탐색

by 세졍 2024. 1. 9.

bfs문제

1.시작점(1,1)에서 (N,M)까지 최소칸수구하기 ( 시작칸 도착칸 포함!)

2.1로 표시된곳만 갈 수 있음

 

 

def bfs(i,j):
    while queue:
        i,j = queue.pop(0)
        if i == N-1 and j == M-1:  #(도착점오면 출력)
            return visited[i][j]
        for d in range(4):
            ni = i + di[d]
            nj = j + dj[d]
            if 0<= ni < N and 0<= nj <M and miro[ni][nj] and visited[ni][nj] == 0:
                queue.append((ni,nj))
                visited[ni][nj] = visited[i][j] + 1


di = [-1,0,1,0]
dj = [0,1,0,-1]
N,M = map(int,input().split())
miro = [list(map(int,input())) for _ in range(N)]
visited = [[0]* M for _ in range(N)]
queue = [(0,0)]
visited[0][0] = 1
print(bfs(0,0)) # 시작점 (1,1)이니까 (0,0)

 

'스터디 > 알고리즘' 카테고리의 다른 글

[11725] 트리의 부모 찾기  (1) 2024.01.13
의상  (0) 2024.01.11
전화번호 목록  (2) 2024.01.09
폰켓몬  (2) 2024.01.08
완주하지 못한 선수  (0) 2024.01.08