문제
https://school.programmers.co.kr/learn/courses/30/lessons/1844
소스코드
from collections import deque
def solution(maps):
n = len(maps)
m = len(maps[0])
visited = [[0] * (m) for _ in range(n)]
q = deque()
q.append([0,0,1])
visited[0][0] = 1
dx = [1,-1,0,0]
dy =[0,0,1,-1]
while q:
x,y,cnt = q.popleft()
if x == (n-1) and y == (m-1):
return cnt
for k in range(4):
xx = x + dx[k]
yy = y + dy[k]
if 0<=xx<n and 0<=yy<m and maps[xx][yy]:
if not visited[xx][yy]:
visited[xx][yy] = 1
q.append([xx,yy,cnt+1])
return -1
설명
bfs로 (n-1,m-1) 에 도달할 수 있도록 탐색한다.
이때 좌표값과 좌표값을 이동할 때 마다 이동한 횟수 (cnt)를 함께 탐색해준다.
'Algorithm' 카테고리의 다른 글
[백준][python]10026 적록색맹 (0) | 2023.06.23 |
---|---|
[백준][python]11559 Puyo Puyo (0) | 2023.06.18 |
[백준][python]2234 성곽 (1) | 2023.06.06 |
[프로그래머스][python]여행경로 (0) | 2023.06.03 |
[백준][python]1012 유기농배추 (0) | 2023.05.31 |