title: "[프로그래머스] 게임 맵 최단거리 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/1844"
description: "프로그래머스 Level 2 문제 [게임 맵 최단거리]의 풀이를 정리합니다."
from collections import deque
def is_valid(r, c, maps):
return (0 <= r < len(maps)) and (0 <= c < len(maps[0]))
def bfs(r, c, maps):
visited = set()
q = deque()
q.append((r, c, 1))
visited.add((r, c))
while len(q) > 0:
r, c, d = q.popleft()
if r == len(maps) - 1 and c == len(maps[0]) - 1:
return d
for dr, dc in [[0, 1], [1, 0], [0, -1], [-1, 0]]:
if is_valid(r+dr, c+dc, maps) and (r+dr, c+dc) not in visited and maps[r+dr][c+dc] == 1:
visited.add((r+dr, c+dc))
q.append((r+dr, c+dc, d+1))
return -1
def solution(maps):
return bfs(0, 0, maps)
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges