티스토리 뷰

문제출처 - https://www.acmicpc.net/problem/2178

 

2178번: 미로 탐색

첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.

www.acmicpc.net

def bfs(maze, n, m):
    visit = [[0] * m for _ in range(n)]
    visit[0][0] = 1
    queue = [[0, 0, 1]]  # [x, y, distance]
    dx = [0, 0, 1, -1]
    dy = [1, -1, 0, 0]

    while queue:
        node = queue.pop(0)
        if node[:2] == [n-1, m-1]: return node[2]

        for i in range(4):
            nx = node[0] + dx[i]
            ny = node[1] + dy[i]
            if nx < 0 or ny < 0 or nx >= n or ny >= m: continue
            if visit[nx][ny] == 0 and maze[nx][ny] == 1:
                queue.append([nx, ny, node[2]+1])
                visit[nx][ny] = 1
        # print("visit", visit, "queue", queue, answer)


def solution():
    n, m = map(int, input().split())
    maze = [list(map(int, input())) for _ in range(n)]

    print(bfs(maze, n, m))


solution()

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

[Python] 백준 - Z(1074번)  (0) 2020.03.20
[Python]백준 - 카드(11652번)  (0) 2020.03.10
[Python]백준 - ABC(3047번)  (0) 2020.03.10
[Python]백준 - 국영수(10825번)  (0) 2020.03.10
[Python]백준 - 그룹 단어 체커(1316번)  (0) 2020.03.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함