[Programmers/프로그래머스] 코딩테스트 고득점 Kit DFS/BFS [코딩테스트 연습]
- [Lv. 2] 타겟 넘버
- [Lv. 3] 네트워크
- [Lv. 2] 게임 맵 최단거리
- [Lv. 3] 단어 변환
- [Lv. 3] 아이템 줍기
- [Lv. 3] 여행경로
- [Lv. 3] 퍼즐 조각 채우기
📌 문제
📝 제한사항
💻 입출력 예
📖 입출력 예 설명
📌 풀이
from collections import deque
def BFS(graph):
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
n, m = len(graph), len(graph[0])
visited = [[False] * m for _ in range(n)]
visited[0][0] = True
queue = deque([(0, 0, 1)])
while queue:
x, y, dist = queue.popleft()
if x == n - 1 and y == m - 1:
return dist
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < m:
if graph[nx][ny] == 1 and not visited[nx][ny]:
visited[nx][ny] = True
queue.append((nx, ny, dist + 1))
return -1
def solution(maps):
answer = BFS(maps)
return answer