문제링크:https://www.acmicpc.net/problem/2178
다루는 주제: BFS
import sys
from collections import deque
N, M = map(int, sys.stdin.readline().split())
maze = []
# 미로 받기
for i in range(N):
maze.append(list(map(int, sys.stdin.readline().strip())))
# 갈수있는 상하좌우
d = [[1, 0], [0, 1], [-1, 0], [0, -1]]
def bfs(row, col):
queue = deque()
queue.append((row, col))
while queue:
row1, col1 = queue.popleft()
for drow, dcol in d:
if 0 <= row1 + drow < N and 0 <= col1 + dcol < M: # 미로 벽 밖으로 나가면 안되게 조건문 걸기
if maze[row1 + drow][col1 + dcol] == 1:
maze[row1 + drow][col1 + dcol] = maze[row1][col1] + 1
queue.append((row1 + drow, col1 + dcol))
bfs(0, 0)
print(maze[N - 1][M - 1])
'Algorithm > 백준(파이썬)' 카테고리의 다른 글
백준 1707 파이썬(Python) 문제풀이 이분그래프 (0) | 2023.04.24 |
---|---|
백준 11725 파이썬(Python) 문제풀이 트리의 부모 찾기 (0) | 2023.04.24 |
백준 2606 파이썬(Python) 문제풀이 바이러스 (0) | 2023.04.23 |
백준 5639 파이썬(Python) 문제풀이 이진 검색 트리 (0) | 2023.04.23 |
백준 11724 파이썬(Python) 문제풀이 연결 요소의 개수 (0) | 2023.04.23 |