뒤로도 움직인다. 중요한 아이디어는 맨위 행으로 가면 끝난다는 것.
벽의 위치는 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))
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 18353 병사 배치하기 (0) | 2021.08.24 |
---|---|
[백준][Python] 3783 세제곱근 (0) | 2021.08.23 |
[백준][Python] 15831 준표의 조약돌 (0) | 2021.08.23 |
[백준][Python] 16926 배열돌리기 1 (0) | 2021.08.23 |
[백준][Python] 16432 떡장수와 호랑이 : 백트래킹 설계. (0) | 2021.08.22 |