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
반응형
'Algorithm' 카테고리의 다른 글
[카카오 코테 2020 | python] 키패드 누르기 (0) | 2025.07.04 |
---|---|
[프로그래머스 DP | python] 도둑질 🔥 (0) | 2025.07.01 |
[카카오 코테 2023 | python] 이모티콘 할인행사 (0) | 2025.07.01 |
[카카오 코테 2020 | python] 문자열 압축 ✅ (0) | 2025.06.27 |
[카카오 코테 2022 | python] 두 큐 합 같게 만들기 (0) | 2025.06.25 |