[python] 백준 2178 미로탐색

hyewon9913·2024년 5월 7일

코딩테스트(python)

목록 보기
17/46

이 문제는 정말 기본적인 미로탐색 문제다.
n,m 까지 가는데 걸린 이동횟수를 구하는 문제이기때문에 따로 그래프를 만들지 않고 기존에 있는 그래프에 이동할때마다 값을 더해주어 n,m 의 좌표값을 출력해주도록 작성해주었다.

from collections import deque
n, m = map(int,input().split())

graph = []
for i in range(n):
    graph.append(list( map(int,input().rstrip())))

def dfs (a,b):
    q = deque()
    q.append((a,b))
    dx = [0,0,1,-1]
    dy = [-1,1,0,0]

    while(q):
        x,y = q.popleft()
        
        for i in range(4):
            nx = dx[i]+x
            ny = dy[i]+y
            #범위내에 있고 방문한 적 없을 때
            if 0<= nx <n and 0<= ny <m and graph[nx][ny] == 1:
                q.append((nx,ny))
                graph[nx][ny] = graph[x][y]+1 
            
    return graph[n-1][m-1]

print(dfs(0,0))


코드상의 graph에서는 모든 좌표값이 -1되어있는 상태이므로 n-1,m-1의 좌표값을 return하도록 해주었다.
그리도 visited와 같은 리스트를 생성하지 않고 graph값이 1인지 확인하는 방법을 통해 방문여부를 확인해주었다.

profile
차근차근 굴러가는 코딩일지

0개의 댓글