[백준] 2178번. 미로탐색
문제
https://www.acmicpc.net/problem/2178
풀이
BFS로 접근하면 되는 문제였다.
시간복잡도를 줄이기 위해 deque랑 방문여부를 표시한 dictionary를 이용했다.
from collections import deque
#입력
n, m = map(int, input().split())
arr = [input() for _ in range(n)]
dir = [(0, 1), (1, 0), (0, -1), (-1, 0)]
visited = [[False] * m for _ in range(n)] # 방문 상태
queue = deque()
queue.append([0, 0])
visited[0][0] = True
distance = [[0] * m for _ in range(n)]
distance[0][0] = 1 #거리기록
while queue:
curX, curY = queue.popleft()
for dx, dy in dir:
if 0 <= curX + dx < n and 0 <= curY + dy < m:
if arr[curX+dx][curY+dy] == '1' and visited[curX+dx][curY+dy] == False:
visited[curX+dx][curY+dy] = True
distance[curX+dx][curY+dy] = distance[curX][curY] + 1
queue.append([curX+dx, curY+dy])
print(distance[n-1][m-1])
Author And Source
이 문제에 관하여([백준] 2178번. 미로탐색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dldbdud314/백준-2178번.-미로탐색저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)