본문 바로가기
  • 안녕하세요,,, 안녕히가세요,,,,
프로그램/코딩테스트

백준 2178 미로 탐색

by 차보루타 2022. 6. 13.

 

from collections import deque

dy = (0, 1, 0, -1)
dx = (1, 0, -1, 0)

# n -> y   m -> x
n, m = map(int, input().split())

labyrinth = [input() for _ in range(n)] # n개의 배열 m의 길이
check = [[False] * m for _ in range(n)]

deq = deque()
deq.append((0, 0, 1))

check[0][0] = True


def err(a, b):
    return 0 <= a < m and 0 <= b < n


while len(deq) > 0:
    y, x, d = deq.popleft()

    if x == m - 1 and y == n - 1:
        print(d)
        break

    for i in range(4):
        xx = x + dx[i]
        yy = y + dy[i]
        dd = d + 1

        if err(xx, yy) and not check[yy][xx] and labyrinth[yy][xx] == '1':
            deq.append((yy, xx, dd))
            check[yy][xx] = True

 

BFS를 이용해 해결했다.

 

큐를 이용해 미리 찍어놓은 좌표대로 움직이도록 했다.

 

마지막 좌표에 도달하면 정답을 출력하도록 했다.

 

'프로그램 > 코딩테스트' 카테고리의 다른 글

백준 1743 음식물 피하기  (0) 2022.06.13
백준 1987 알파벳  (0) 2022.06.13
백준 11724 연결 요소의 개수  (0) 2022.06.13
백준 1449 수리공 항승  (0) 2022.06.13
백준 1931 회의실 배정  (0) 2022.06.13

댓글