13565๋ฒ - ์นจํฌ
์์์๋ถํฐ ์ํฌ๋ฅผ ์นจํฌ์ํค๋๋ฐ ์๋์ชฝ๊น์ง ๋ฟ์์ง ์๋ฟ์์ง ๋ง์ถ๋ ๋ฌธ์ ์ ๋๋ค.
M,N = map(int,input().split())
graph = []
que = deque()
for _ in range(M):
graph.append(list(map(int,input())))
๊ฒฉ์์ ๊ฐ๋ก์ ์ธ๋ก ๊ธธ์ด, ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ํ๋ฅผ ๋ฐ์์ฃผ๊ณ que๋ฅผ ํ๋ ์ ์ธํด์ค์๋ค.
from collections import deque
dx = [-1,1,0,0]
dy = [0,0,1,-1]
def bfs(x,y):
que.append([x,y])
while que:
x,y = que.popleft()
for i in range(4):
nx = dx[i] + x
ny = dy[i] + y
if nx<0 or ny<0 or nx>=M or ny>=N:
continue
BFS ํญ์ ์ฐ๋ ๊ฒ์ฒ๋ผ que์ ์ธํ๊ณ 4๋ฐฉํฅ ํ์์ ์ค์ํด์
if graph[nx][ny] == 0 or graph[x][y] == 0:
graph[x][y] = 9
graph[nx][ny] = 9
que.append([nx,ny])
๋ง์ฝ์ ์ํฌ๋ฅผ ๋จ์ดํธ๋ฆด์ ์๋ ๊ณต๊ฐ์ธ 0์ด ๋์จ๋ค๋ฉด 9๋ก ์ซ์๋ฅผ ๋ฐ๊ฟ ์ํฌ๋ฅผ ๋จ์ดํธ๋ ธ์์ ํ๊ธฐํด์ฃผ๊ฒ ์ต๋๋ค.
for i in range(len(graph[0])):
if graph[0][i] == 0:
bfs(0,i)
๋ฌธ์ ์์ ์ํฌ๋ ์์์๋ถํฐ ๋จ์ดํธ๋ฆฐ๋ค ํ์ผ๋ฏ๋ก ๊ทธ๋ํ ๋งจ ์๋ง ์น๋ค ์กฐ์ฌํด์ BFS๋ฅผ ๋๋ ค์ฃผ๋ฉด ๋ฉ๋๋ค.
boolean = False
for j in range(len(graph[-1])):
if graph[-1][j] == 9:
boolean = True
break
if boolean == True:
print('YES')
else:
print('NO')
๊ทธ๋ฆฌ๊ณ ๋ง์ฝ ๊ทธ๋ํ์ ํ๋จ์ 9๊ฐ ์กด์ฌํ๋ค๋ฉด ์ํฌ๊ฐ ๋๊น์ง ๋๋ฌํ ์ ์๋ค๋ ์๋ฏธ์ด๋ฏ๋ก YES๋ฅผ, ์๋๋ผ๋ฉด NO๋ฅผ ์ถ๋ ฅํ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.