[proj] 게임 맵 최단거리

히치키치·2024년 1월 12일
0

알고리즘

목록 보기
1/4

주어진 맵의 가로와 세로 크기를 직접 length로 구해서 nr, nc에 대해 유효한 좌표인지 확인하는 로직 추가해야만 런타임 에러 해결됨.. 생각없이 예시 그림에 맵 크기 5로 놓고 돌려서 통과 못 했음

반례

[[1,1]]
// answer: 2

코드

from collections import deque 

def solution(maps):
    
    dr, dc = [-1,1,0,0], [0,0,-1,1]
    que = deque()
    que.append([0,0])
    N,M=len(maps), len(maps[0])
    

    while que:
        r,c = que.popleft()
        for idx in range(4):
            nr, nc = r+dr[idx], c + dc[idx]
            ## 범위 밖인 경우 OR 벽인 경우
            if not(0<=nr<N) or not(0<=nc<M) or maps[nr][nc]==0: 
                continue
            ## 최초 방문인 경우 
            if maps[nr][nc]==1:
                maps[nr][nc]=maps[r][c]+1
                que.append([nr,nc])
    
    answer = -1 if maps[-1][-1]==1 else maps[-1][-1]
    return answer

0개의 댓글