내 풀이
from collections import deque
def solution(maps):
answer = 0
n, m = len(maps[0]), len(maps)
direction = [(0,1), (0,-1), (1,0), (-1,0)] # 가야 할 방향
def bfs(x, y):
queue = deque()
queue.append((x,y))
while queue:
x,y = queue.popleft()
for dx, dy in direction:
nx, ny = x+dx, y+dy
if 0 <= nx < n and 0 <= ny < m: # 맵 범위를 벗어나지 않았을 때
if maps[ny][nx] == 1: # 갈 수 있는 길 + 지나지 않은 길
maps[ny][nx] += maps[y][x] # 지나온 거리를 더해주기 때문
queue.append((nx, ny))
bfs(0,0)
# 마지막 값이 지나온 거리로 바뀌지 않고 1로 남아있다면 도달하지 못했다는 뜻
return -1 if maps[-1][-1] == 1 else maps[-1][-1]
메모
자주 풀어야 익숙해지지!
'PROGRAMMERS' 카테고리의 다른 글
[프로그래머스/파이썬] 충돌위험 감지 (0) | 2025.02.10 |
---|---|
[프로그래머스/파이썬] 옹알이 (1) (0) | 2025.02.09 |
[프로그래머스/파이썬] 석유 시추 (0) | 2025.02.06 |
[프로그래머스/파이썬] 퍼즐 게임 챌린지 (2) | 2025.02.04 |
[프로그래머스/파이썬] 주차 요금 계산 (0) | 2025.02.03 |