본문 바로가기
백준

미로탐색 - 2178 번

by 청원뿔세포 2022. 10. 4.

bfs로 해결하였다.

처음 시작점으로부터 마지막 점까지의 계층을 구분짓기 위하여 while 문 다음에 데큐 크기를 중심으로 for 문을 하나 끼워줬다.

import sys
from collections import deque

# y_axis == n, x_axis == m
y_axis, x_axis = map(int,input().split())

# 방향
d = [[1,0],[-1,0],[0,1],[0,-1]]

graph = [[0]*101 for _ in range(101)]
visited = [[False]*101 for _ in range(101)]

for y in range(y_axis):
    a = sys.stdin.readline()
    for x in range(x_axis):
        graph[y][x] = int(a[x])
ans = 1 
def bfs(x,y):
    global ans
    stop = 0


    q = deque([(x,y)])
    visited[y][x] = True

    while q:
        if stop:
            break
        q_size = len(q)
        ans += 1
        for size in range(q_size):
            if stop:
                break
            x,y = q.popleft()

            for i in range(4):
                nx = x + d[i][0]
                ny = y + d[i][1]
                if nx == x_axis-1 and ny == y_axis-1:
                    stop = 1
                    break
                elif 0 <= nx < x_axis and 0 <= ny < y_axis and graph[ny][nx] and not visited[ny][nx]:
                    
                    visited[ny][nx] = True
                    q.append((nx,ny))

bfs(0,0)
print(ans)

'백준' 카테고리의 다른 글

영화감독 숌 - 1436번  (0) 2022.10.05
적록색약 - 10026번  (0) 2022.10.04
유기농 배추 - 1012번  (0) 2022.10.04
N과 M (2) - 15650 번  (0) 2022.10.03
N과 M (1) - 15649 번  (0) 2022.10.02

댓글