from collections import deque
dy, dx = [-1, 1, 0, 0], [0, 0, -1, 1]
def solution(maps):
visited = [[0] * len(maps[0]) for _ in range(len(maps))]
q = deque()
q.append((0, 0, 1))
visited[0][0] = 1
while q:
y, x, dist = q.popleft()
if y == len(maps) - 1 and x == len(maps[0]) - 1:
return dist
for i in range(4):
ny = y + dy[i]
nx = x + dx[i]
if 0 <= ny < len(maps) and 0 <= nx < len(maps[0]):
if maps[ny][nx] == 1 and not visited[ny][nx]:
q.append((ny, nx, dist + 1))
visited[ny][nx] = 1
return -1
bfs를 활용한 최단거리 구하기 문제
처음에 바보같이 dfs로 접근했다가 시간초과로 터졌다!
dfs는 최소를 보장해주지 않는다.
'Algorithm | SQL > Programmers' 카테고리의 다른 글
[Programmers | Level 2] 뉴스 클러스터링 (Python) (2018 KAKAO BLIND RECRUITMENT) (0) | 2021.05.12 |
---|---|
[Programmers | Level 2] 오픈채팅방 (Python) (2019 KAKAO BLIND RECRUITMENT) (0) | 2021.05.12 |
[Programmers | Level 2] 방문 길이 (Python) (0) | 2021.05.03 |
[Programmers | Level 2] 행렬의 곱셈 (Python) (0) | 2021.04.30 |
[Programmers | Level 2] 프린터 (Python) (0) | 2021.04.30 |