티스토리 뷰
from collections import deque
n, m = map(int, input().split())
maze = []
for i in range(n):
maze.append(list(map(int, input())))
dx = [-1, 1, 0, 0] # 상하
dy = [0, 0, -1, 1] # 좌우
def bfs(x, y): # 넓이 우선 탐색
queue = deque() # 리스트 생성
queue.append((x, y))
while queue:
x, y = queue.popleft()
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 maze[nx][ny] == 0:
continue
if maze[nx][ny] == 1:
maze[nx][ny] = maze[x][y]+1 # 하나씩 증가하여 마지막 위치의 값이 움직인 값이 됨
queue.append((nx, ny)) # 좌표 추가 - 삭제 반복
return maze[n-1][m-1] # 마지막 위치 반환
print(bfs(0, 0)) # 처음 위치
'Python > 이코테' 카테고리의 다른 글
6-3.성적이 낮은 순서로 학생 출력하기 (0) | 2022.06.29 |
---|---|
6-2. 위에서 아래로 (0) | 2022.06.28 |
5-3. 음료수 얼려 먹기 (0) | 2022.06.26 |
5-2. 탐색 알고리즘 DFS/BFS (0) | 2022.06.24 |
5-1. 꼭 필요한 자료구조 기초 (0) | 2022.06.23 |
댓글