rueki

BOj 2178. 미로찾기 (BFS) 본문

python

BOj 2178. 미로찾기 (BFS)

륵기 2022. 10. 9. 15:31
728x90
반응형

현재 시점을 큐에 넣고 그 다음 좌표값으로 동서남북으로 움직이며 계속 탐색하는 방법으로 접근

다음 좌표의 값이 0이면 패스, 1이면 이전 값에 누적시키며 기록하여 최종 기록 나올 때까지 탐색하게 된다.

 

from collections import deque
#bfs 문제

n, m = map(int, input().split())
graph = []

for _ in range(n):
    graph.append(list(map(int,input())))

#상하좌우
dx = [-1,1,0,0]
dy = [0,0,-1,1]




def bfs(x, y):
    #queue 선언
    queue = deque()
    queue.append((x, y))

    #큐가 빌 때까지
    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            
            if nx < 0  or nx >= n or ny<0 or ny >= m:
                continue
            
            #해당 미로가 0인경우 무시
            if graph[nx][ny] == 0:
                continue
            
            if graph[nx][ny] == 1:
                #현재 좌표에 이전 값에 1 더한걸로 기록
                graph[nx][ny] = graph[x][y] + 1
                
                #다음 좌표로 넘기기 위해 큐에 넣기
                queue.append((nx,ny))
    
    
    return graph[n-1][m-1]

print(bfs(0,0))
728x90
반응형

'python' 카테고리의 다른 글

BOJ 2023. 신기한 소수 찾기 (DFS)  (0) 2022.10.06
BOJ 11286. 절대값 힙  (0) 2022.10.06
BOJ 2164. 카드2  (0) 2022.10.06
BOJ 17298. 오큰수 (Stack)  (0) 2022.10.05
BOJ 1940. 주몽 (투 포인터)  (1) 2022.10.04
Comments