BFS를 사용한 미로탈출 알고리즘을 사용하여 X를 0, S, L, E를 1로 저장한 후 이동거리를 반환하는 방법을 사용했습니다.
아래의 코드를 문제에 맞게 변형하면 쉽게 해결할 수 있습니다.
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, ny = x + dx[i], 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))
왜 while문만 칸막이 안에 들어갔을까요.