https://www.acmicpc.net/problem/13565
풀이
BFS알고리즘을 이용하여서 문제를 풀어주었습니다. 문제에서 말하는 바깥쪽은 격자의 맨 윗줄을 뜻합니다. 안쪽은 격자의 맨 아랫줄을 뜻합니다.
코드
# 13565번 침투
import sys
from collections import deque
input = sys.stdin.readline
M, N = map(int, input().split())
grid = [list(input().rstrip()) for _ in range(M)]
dxys = ((0,1), (1,0), (-1,0), (0,-1))
visited = [[False]*N for _ in range(M)]
def bfs(s_x, s_y):
queue = deque([])
queue.append([s_x, s_y])
visited[s_y][s_x] = True
while queue:
c_x, c_y = queue.popleft()
for dx, dy in dxys:
n_x = c_x + dx
n_y = c_y + dy
if 0 <= n_x < N and 0 <= n_y < M and visited[n_y][n_x] == False and grid[n_y][n_x] == "0":
if n_y == M-1:
return True
visited[n_y][n_x] = True
queue.append([n_x, n_y])
flag = False
for i in range(N):
if grid[0][i] == "0":
flag = bfs(i, 0)
if flag == True:
break
if flag:
print("YES")
else:
print("NO")
출력결과
'백준 > DFS&BFS' 카테고리의 다른 글
[백준][Python] 1987번 알파벳 - 코팩 (0) | 2023.05.22 |
---|---|
[백준][Python] 17836번 공주님을 구해라! - 코팩 (0) | 2023.04.04 |
[백준][Python] 16928번 뱀과 사다리 게임 - 코팩 (0) | 2023.03.28 |
[백준][Python] 14716번 현수막 - 코팩 (0) | 2023.03.27 |
[백준][Python] 2660번 회장뽑기 - 코팩 (0) | 2023.03.23 |