
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
미로 탐색 문제를 풀던 중에 이해가 되지 않은 부분이 있어서 질문 드립니다.
저는 visited라는 배열을 추가로 두고 방문한 적이 있으면 방문하지 않도록 처리를 하였습니다. 강의에서는 이중 for문으로 visited를 대체하는 것으로 이해해서 저도 이중 for문으로 대체를 하여 미로 탐색 문제를 풀었는데 계속 입력이 받도록 종료가 되지 않았습니다.
작성한 코드 및 에러 메세지
오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.
# visited로 해결
from collections import deque
n, m = map(int, input().split())
graph = [list(map(int, input().rstrip())) for _ in range(n)]
visited = [[0] * m for _ in range(n)]
dx = [-1,1,0,0]
dy = [0,0,-1,1]
count = 0
def bfs(x,y):
visited[x][y] = 1
q = deque()
q.append((x,y))
while q:
x,y = q.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 graph[nx][ny] == 1 and visited[nx][ny] ==0:
q.append((nx,ny))
visited[nx][ny] = 1
graph[nx][ny] = graph[x][y] + 1
# 이중 for문 삭제, maze[x][y] 를 0으로 처리
import sys
from collections import deque
input = lambda: sys.stdin.readline().rstrip()
def maze_search(rows, cols, maze):
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
q = deque([(0, 0)])
while q:
x, y = q.popleft()
for i in range(4):
nx = dx[i] + x
ny = dy[i] + y
if nx < 0 or nx >= rows or ny < 0 or ny >= cols or maze[nx][ny] != 1:
continue
q.append((nx, ny))
maze[nx][ny] = maze[x][y] + 1
maze[x][y] = 0
return maze[rows-1][cols-1]
n, m = map(int, input().split())
arr = [list(map(int, input())) for _ in range(n)]
print(maze_search(n, m, arr))
Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!
