[프로그래머스 파이썬] 게임 맵 최단거리

일단 해볼게·2023년 2월 10일
0

프로그래머스

목록 보기
25/106

https://school.programmers.co.kr/learn/courses/30/lessons/1844

from collections import deque

def solution(maps):
    dx = [-1, 1, 0, 0]
    dy = [0, 0, -1, 1]
    
    graph = [[-1 for _ in range(len(maps[0]))]for _ in range(len(maps))] # -1로 초기화
    # len(maps) = 가로, len(maps[0]) = 세로
    
    q = deque([(0,0)])
    graph[0][0] = 1 # 첫 좌표 +1
    
    while q:
        y, x = q.popleft()
        
        for i in range(4):
            nx = dx[i] + x 
            ny = dy[i] + y
            
            if 0<= ny < len(maps) and 0<= nx < len(maps[0]) and maps[ny][nx] == 1: # 범위 내에 있고 벽이 아닐 경우
                if graph[ny][nx] == -1: 
                    graph[ny][nx] = graph[y][x] + 1 # 지나가야 하는 칸의 개수 + 1
                    q.append([ny, nx]) # 큐에 삽입
    
    return graph[-1][-1]
    

bfs로 해결했다.

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글