728x90
생각보다 쉽게 풀었다. 함수에서 굳이 return 을 하지 않아도 되는 경우를 구별하는 게 중요한 것 같다.2차원 리스트 초기화 부분을 명확히 해야겠다.
import sys
from collections import deque
def bfs(a,b,N,M):
dx = [0,0,1,-1]
dy = [1,-1,0,0]
queue = deque()
queue.append([a,b])
while queue:
x,y = queue.popleft()
for i in range(4):
temp_x = x + dx[i]
temp_y = y + dy[i]
if visited[temp_x][temp_y] == False:
if 0<=temp_x<N and 0<=temp_y<M and k[temp_x][temp_y]!=0:
k[temp_x][temp_y] = k[x][y] + 1
visited[temp_x][temp_y] = True
queue.append([temp_x,temp_y])
N,M = list(map(int,sys.stdin.readline().split(" ")))
k = [ ]
for i in range(N):
k.append(list(map(int,list(sys.stdin.readline().rstrip()))))
visited = [[False]*(M+1) for i in range(N+1)]
for i in range(0,len(k)):
for j in range(0,len(k[i])):
if visited[i][j] == False and k[i][j] !=0:
bfs(i,j,N,M)
print(k[-1][-1])
728x90
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 7562 나이트의 이동 (0) | 2023.07.05 |
|---|---|
| [파이썬] 백준 7576 토마토 (1) | 2023.07.04 |
| [파이썬] 백준 2667 단지번호붙이기 (0) | 2023.06.29 |
| [파이썬] 백준 14889 스타트와 링크 (0) | 2023.06.20 |
| [파이썬] 백준 2529 부등호 (0) | 2023.06.20 |