Algorithm
[프로그래머스 BFS | python] 게임 맵 최단거리
삐롱K
2025. 7. 23. 15:49
728x90
반응형
이 코드는 BFS를 이용하여 최단 경로를 탐색합니다.
BFS는 시작 지점에서 가까운 노드부터 탐색하기 때문에, 도착 지점에 처음 도달했을 때가 곧 최단 거리이며,
따라서
visited[n-1][m-1]
에 저장된 값이 최단 거리를 보장합니다.
또한 방문 여부를 확인하며 중복 방문을 방지하기 때문에, 불필요한 경로 탐색도 하지 않습니다.
from collections import deque
def solution(maps):
n,m = len(maps), len(maps[0])
dx, dy = [1,-1,0,0], [0,0,1,-1]
visited = [[-1 for _ in range(m)] for _ in range(n)]
visited[0][0] = 1
queue = deque([(0,0)])
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < m and visited[nx][ny] == -1 and maps[nx][ny] == 1:
queue.append([nx, ny])
visited[nx][ny] = visited[x][y] + 1
return visited[n-1][m-1]
728x90
반응형