잡다로그

[Python/코테] 백준 2178 미로탐색 본문

Algorithm

[Python/코테] 백준 2178 미로탐색

날으는다람쥐 2024. 3. 23. 22:49

13904 과제

문제 및 조건 설명: https://www.acmicpc.net/problem/2178

알고리즘 설계

✔️그래프의 최단 경로를 구하는 문제

     👉 BFS로 해결.

해답

from collections import deque

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

dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]


def bfs(x, y):
    queue = deque()
    queue.append((x, y))

    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx = dx[i] + x
            ny = dy[i] + y

            if nx < 0 or nx >= n or ny < 0 or ny >= m:
                continue
            if maze[nx][ny] == 0:
                continue
            if maze[nx][ny] == 1:
                maze[nx][ny] = maze[x][y] + 1
                queue.append((nx, ny))

    return maze[n-1][m-1]


print(bfs(0, 0))

나다어

  • DFS는 빨리 경로를 찾을 수 있지만, 최단 경로를 찾기 위해서는 BFS를 사용해야 한다.
  • BFS로 최단경로를 구하려면, 칸을 이동할 때마다 시작점부터의 거리를 해당 칸에 기록(업데이트)하는 방식을 사용할 수 있다.

아래 2번 미로 탈출 문제와 해답이 동일한 문제였다 !

2023.04.27 - [Algorithm] - [Python/코테] DFS/BFS (2) - 예제 문제

 

[Python/코테] DFS/BFS (2) - 예제 문제

DFS, BFS 를 활용하는 문제인지 알 수 있는 방법은 주어진 조건을 그래프 형태로 표기할 수 있는가? 를 따져본 뒤 → 탐색에 DFS, BFS 사용 가능 ! 그래프 형태는 오른쪽과 같이 연결되어있는 원소간

snowflower19.tistory.com

 

Comments