개인 공부 공간/Algorithm
BOJ(백준) 2178번 미로 탐색 파이썬
Hoon Kang
2021. 3. 22. 22:17
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
코드
import sys
r=sys.stdin.readline
N,M=map(int,r().split())
maze=[]
for _ in range(N):
maze.append([int(i) for i in r().rstrip()])
dx=[1,-1,0,0]
dy=[0,0,1,-1]
q=[]
for y in range(N):
for x in range(M):
if maze[y][x]:
q.append((x,y))
while q:
temp=q[0]
q=q[1:]
for i in range(4):
new_x=temp[0]+dx[i]
new_y=temp[1]+dy[i]
if 0<=new_x<M and 0<=new_y<N and maze[new_y][new_x]==1:
q.append((new_x,new_y))
maze[new_y][new_x]=maze[temp[1]][temp[0]] + 1
print(maze[N-1][M-1])
해설
maze
에서 상하좌우로 탐색을 하며 문제의 조건에 따라 이동할 수 있는 칸에 대해서는 1씩 더해주었다. 그 후 maze
의 마지막 인덱스값을 출력하였다.
결과