ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 #2178번 미로탐색
    Python/문제풀이 다시 하기 2022. 10. 26. 15:46
    from collections import deque
    
    n, m=map(int, input().split())
    matrix=[list(map(int, input())) for _ in range(n)]
    
    # 이동할 방향 정의(상, 하, 좌, 우)
    dx = [0, 0, -1, 1]
    dy = [1, -1, 0, 0]
    
    def bfs(x, y):
        q=deque()
        q.append((x, y))
    
        while q:
            x, y=q.popleft()
            #print("x, y", q.popleft())
            for i in range(4):
                nx=x+dx[i]
                ny=y+dy[i]
    
                # 범위 벗어나면
                if nx<0 or ny<0 or nx>=n or ny>=m:
                    continue
    
                #벽이면
                if matrix[nx][ny]==0:
                    continue
    
                #벽이 아니면 이동 가능
                if matrix[nx][ny]==1:
                    matrix[nx][ny]=matrix[x][y]+1
                    q.append((nx, ny))
    
        return matrix[n-1][m-1]
    
    print(bfs(0, 0))

    IndexError: pop from an empty deque

    원인코드 : print(q.popleft())

    이유 : q.popleft를 두 번 한 셈

     

     

    댓글

Designed by Tistory.