practivceAlgorithm/백준

[백준][Python] 16954 움직이는 미로탈출

findTheValue 2021. 8. 23. 13:14

뒤로도 움직인다. 중요한 아이디어는 맨위 행으로 가면 끝난다는 것.

벽의 위치는 turn으로 내리는척 탐색으로 처리.

import sys
input = sys.stdin.readline
from collections import deque

def BFS(start_x,start_y,start_time):
    queue = deque()
    queue.append((start_x,start_y,start_time))
    while queue:
        x, y, turn = queue.popleft()
        for dx,dy in move:
            nx = x + dx
            ny = y + dy
            if 0<=nx<8 and 0<=ny<8 and not maze[nx-turn][ny]=='#' and not maze[nx-turn-1][ny]=='#':
                if nx-turn < 0:
                    return 1
                queue.append([nx,ny,turn+1])
    return 0


maze=[list(input().rstrip()) for _ in range(8)]
move = [[0,0],[0,-1],[0,1],[-1,0],[1,0],[-1,-1],[1,-1],[1,1],[-1,1]]
print(BFS(7,0,0))