[백준] 2178 미로

N, M = map(int,input().split())
matrix = [list(input()) for _ in range(N)]
visited = [[0]*M for _ in range(N)]
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
q = [(0, 0)]
visited[0][0] = 1

while q:
    current = q.pop(0)
    
    x = current[0]
    y = current[1]

    if x == N-1 and y == M-1:
        print(visited[x][y])
        break

    for dir in range(4):
        nx = x+dx[dir]
        ny = y+dy[dir]

        if 0<=nx<N and 0<=ny<M and visited[nx][ny] == 0 and matrix[nx][ny] == '1':
            visited[nx][ny] = visited[x][y]+1
            q.append((nx,ny))

BFS의 교과서같은 문제. 프로그래머스 코테를 광탈해서 오늘은 좀 짧게 써야겠다.

TIL

  1. BFS의 기본구조와.. 나도 한 방에 코딩을 해버릴 수 있다는 점이다.

좋은 웹페이지 즐겨찾기