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