[python 파이썬] 백준 2178번 미로탐색
2021. 2. 23. 02:43ㆍAlgorithm/BOJ
반응형
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
이 문제는 BFS로 풀어야하는 문제이다.
설명은 코드와 함께 하겠다!
from collections import deque
n,m=map(int,input().split())
graph=[]
for i in range(n):
graph.append(list(map(int,input())))
dx=[-1,1,0,0]
dy=[0,0,-1,1]
def bfs(x,y):
#큐 구현위해 deque라이브러리 사용
queue = deque()
queue.append((x,y))
#queue가 빌때까지 반복
while queue:
x,y=queue.popleft()
for i in range(4):
# 현재위치에서 네방향으로의 위치 확인
for i in range(4):
nx=x+dx[i]
ny=y+dy[i]
#미로찾기 공간을 벗어난 경우 무시
if nx<0 or ny<0 or nx>=n or ny>=m:
continue
#벽인경우 무시
if graph[nx][ny]==0:
continue
#해당노드를 처음 방문하는 경우에만 최단거리 기록
if graph[nx][ny]==1:
graph[nx][ny]=graph[x][y]+1
queue.append((nx,ny))
#가장 오른쪽 아래까지의 최단거리 반환
return graph[n-1][m-1]
#BFS를 수행한 결과 출력
print(bfs(0,0))
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[python 파이썬] 백준 2606번 바이러스 (0) | 2021.02.25 |
---|---|
[python 파이썬] 백준 1260번 DFS와 BFS (0) | 2021.02.23 |
[python 파이썬] 백준 2003번 수들의 합2 (0) | 2021.02.15 |
[python 파이썬] 백준 11660번 구간합구하기5 (0) | 2021.02.15 |
[python 파이썬] 백준 11659번 구간합구하기 4 (0) | 2021.02.15 |