from collections import deque
def solution(maps):
answer = 0
q=deque()
#maps의 [0][0]에서 출발하고 [n][m]에 도착 행은 가로(+가 오른쪽 -왼쪽) 열은 세로 (+가 아래 -가 위)
#도착할 수 없는 경우 -1을 리턴하도록 하기
n = len(maps) #행의 개수
m = len(maps[0]) #열의 개수
visited = [[False] * m for _ in range(n)] # 방문했던 곳인지 확인
q.append((0,0)) #줄발점
dx = [-1,1,0,0] # 상하좌우
dy = [0,0,-1,1]
while q:
y,x = q.popleft()
for i in range(4): #상하좌우 네 방향 탐색하기
nx = x + dx[i] #새로운 x좌표 이동 후
ny = y + dy[i] #새로운 y좌표 이동 후
if 0 <=nx < m and 0 <= ny < n and maps[ny][nx] == 1 :
# 범위 내에 있고 이동 가능한 곳이라면,
if not visited[ny][nx]:
visited[ny][nx] = True # 방문 처리
q.append((ny, nx)) # 다음 탐색할 좌표로 추가
maps[ny][nx] = maps[y][x] + 1 # 이전 좌표까지의 거리 + 1로 갱신
if maps[n-1][m-1] ==1:
return -1
else:
return maps[n-1][m-1]
return answer
이 풀이는 다른 풀이를 참고하여 작성한 것입니다. (거의 주석만 제가 달았다고 보면 됩니다...)
=> 아직도 어렵지만 탐색할 때 어떻게 생각을 해야할지 느낌을 알 것 같고 다른 코드를 분석하는 것만으로도 실력이 향상하는 것 같다!!