[파이썬] 백준 4179번 불!
작성:
백준 #4179 불!
# 출력: 불이 도달하기 전 탈출 불가 - IMPOSSIBLE
# 미로를 탈출하는 경우 - 가장 빠른 탈출시간
# 지훈, 불을 각각 BFS하여 나갈수 있는 시간 및 여부를 구한다.
from collections import deque
R, C = map(int, input().split())
field = [list(input()) for i in range(R)]
J = None
F = []
for i in range(R):
for j in range(C):
if field[i][j] == 'J': J = (i, j)
if field[i][j] == 'F': F.append((i, j))
q = deque([J])
time = 0
q_fire = deque(F)
dy = [0, 1, 0, -1]
dx = [1, 0, -1, 0]
found = False
while q:
time += 1
for i in range(len(q_fire)):
y, x = q_fire.popleft()
for j in range(4):
ny = y + dy[j]
nx = x + dx[j]
if 0 <= ny < R and 0 <= nx < C and field[ny][nx] != '#' \
and field[ny][nx] != 'F':
field[ny][nx] = 'F'
q_fire.append((ny, nx))
for i in range(len(q)):
y, x = q.popleft()
for j in range(4):
ny = y + dy[j]
nx = x + dx[j]
if 0 <= ny < R and 0 <= nx < C:
if field[ny][nx] == '.':
field[ny][nx] = 'J'
q.append((ny, nx))
else:
found = True
break
if found: break
if found: break
if len(q) == 0:
time = 'IMPOSSIBLE'
break
print(time)
댓글남기기