개발자 톡
동시에 도착하는 경우 처리 방법
- 등록일
- 2024-12-21 00:51:29
- 조회수
- 85
- 작성자
- sharks619
import sys
from collections import deque
dirs = [(0,1),(1,0),(0,-1),(-1,0)]
n, m = map(int, sys.stdin.readline().split())
maps = [list(sys.stdin.readline().strip()) for _ in range(n)]
queue = deque()
nv = [[False] * m for _ in range(n)]
gv = [[False] * m for _ in range(n)]
for i in range(n):
for j in range(m):
if maps[i][j] == 'N':
queue.append((i, j, 'N'))
nv[i][j] = True
elif maps[i][j] == 'G':
queue.append((i, j, 'G'))
gv[i][j] = True
def bfs():
while queue:
x, y, who = queue.popleft()
for d in range(4):
nx, ny = x + dirs[d][0], y + dirs[d][1]
if 0 <= nx < n and 0 <= ny < m:
if who == 'N':
if not nv[nx][ny] and not gv[nx][ny] and maps[nx][ny] != '#':
if maps[nx][ny] == 'D':
return "Yes"
nv[nx][ny] = True
queue.append((nx, ny, 'N'))
elif who == 'G':
if not gv[nx][ny]:
gv[nx][ny] = True
queue.append((nx, ny, 'G'))
return "No"
print(bfs())
위 코드에서는 남우가 도착지에 도착하면 바로 yes를 출력하는데요
여기서 도착지에 유령도 같은 시각에 도착하는 경우에 대해선 고려가 안되는 것 같은데 문제는 다 맞더라고요
혹시 제가 놓치고 있는게 있을까요?