게임맵 최단거리 - level2

2023. 1. 6. 11:38코딩 테스트 준비

728x90
반응형
from collections import deque
def solution(maps):
    def bfs(y, x):
        q = deque()
        q.append((y,x))
        maps[y][x] = 2
        while q:
            y,x = q.popleft()
            for dx,dy in d:
                Y, X = y + dy, x + dx
                if 0<=Y<len(maps) and 0<=X<len(maps[0]) and maps[Y][X] == 1:
                    maps[Y][X] = maps[y][x] + 1
                    q.append((Y,X))
        
    d = [(1,0),(-1,0),(0,1),(0,-1)]
    bfs(0,0)

    if maps[-1][-1] == 1:
        return -1
    return maps[-1][-1] - 1

최단거리를 구하는 bfs 문제는 결국 대부분 동일하다. 범위와 이동반경만 신경쓰면 풀 수 있다.

728x90
반응형

'코딩 테스트 준비' 카테고리의 다른 글

가장 긴 감소하는 부분 순열 – 실버2  (0) 2023.01.06
계단 오르기 – 실버3  (0) 2023.01.06
개인적인 DP 문제 풀이법 정리  (0) 2023.01.05
2xn 타일링 - 실버 3  (0) 2023.01.05
1로 만들기 - 실버 3  (0) 2023.01.05