<문제 링크>
https://www.acmicpc.net/problem/2178
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
<정답 코드>
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
|
from collections import deque
n, m = map(int, input().split())
maze = [list(map(int, input())) for _ in range(n)]
def bfs(graph, x, y):
q = deque([(0, 0)])
# 상하좌우 이동 값
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
while q:
x, y = q.popleft()
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < n and 0 <= ny < m and graph[nx][ny] == 1:
q.append((nx, ny))
graph[nx][ny] = graph[x][y] + 1
return graph[n-1][m-1]
print(bfs(maze, 0, 0))
|
cs |
현재 위치에서 상하좌우 중 움직일 수 있는 방향의 값에 +1을 해서
특정 위치에 도달하려면 몇번 이동해야하는지를 구한다
'프로그래밍 > Python' 카테고리의 다른 글
백준_python 10942번 팰린드롬?(시간초과, DP) (0) | 2024.04.23 |
---|---|
백준_python 1003번 피보나치 함수(다이나믹프로그래밍) (0) | 2024.04.22 |
백준_python 1463번 1로 만들기(BFS, DP) (0) | 2024.04.21 |
프로그래머스_python lv2. 타겟 넘버(깊이/너비 우선 탐색(DFS/BFS)) (1) | 2024.04.20 |
프로그래머스_python lv2. 다리를 지나는 트럭(스택, 큐 - deque) (0) | 2024.04.18 |