문제 : https://www.acmicpc.net/problem/1261
BFS 문제다.
전형적인 탐색 문제고, 벽의 갯수를 Queue에 넣지 않고, 따로 lt 라는 리스트에 저장하여 풀었다.
하도 예전에 한거라 블로그 닉값한 문제인지 내가 푼건지 모르겠다.
import sys
from collections import deque
m,n = [int(i) for i in sys.stdin.readline().rstrip().split()]
arr = []
dx = [-1,1,0,0]
dy = [0,0,1,-1]
for i in range(n):
arr.append([c for c in list(sys.stdin.readline().rstrip())])
lt = [[0]*m for _ in range(n)]
visited = [[False]*m for _ in range(n)]
q = deque()
q.append([0,0])
visited[0][0] = True
while q:
cy,cx = q.popleft()
if cy == n-1 and cx == m-1:
print(lt[cy][cx])
sys.exit()
for i in range(4):
ny,nx = cy+dy[i] , cx+dx[i]
if 0<=ny<n and 0<=nx<m:
if arr[ny][nx] == "1" and not visited[ny][nx]:
lt[ny][nx] = lt[cy][cx] +1
visited[ny][nx]=True
q.append([ny,nx])
elif arr[ny][nx] == "0" and not visited[ny][nx]:
lt[ny][nx] = lt[cy][cx]
visited[ny][nx] =True
q.appendleft([ny,nx])
'취준 > 백준' 카테고리의 다른 글
[백준][Python][11722][DP]가장 긴 감소하는 부분 수열 (0) | 2020.02.26 |
---|---|
[백준][Python][6087][BFS]레이저 통신 (0) | 2020.02.23 |
[백준][Python][1309][DP] 동물원 (0) | 2020.02.21 |
[백준][Python][14889][브루트포스] 스타트와 링크 (0) | 2020.02.19 |
[백준][Python][11053][DP]가장 긴 증가하는 부분 수열 (0) | 2020.02.19 |