https://www.acmicpc.net/problem/4179
import sys
from collections import deque
input = sys.stdin.readline
n, m = map(int, input().split()) # 세로, 가로
arr = [list(input().rstrip()) for _ in range(n)]
ans = 'IMPOSSIBLE'
q = deque()
# 지훈이 먼저 큐에 넣기!! 순서 중요!!
for i in range(n):
for j in range(m):
if arr[i][j] == 'J':
q.append((0,i,j)) # 0은 지훈(소요시간 0 초기화)
# 그 다음 불 큐에 넣기
for i in range(n):
for j in range(m):
if arr[i][j] == 'F':
q.append((-1,i,j)) # -1은 불
# 지훈이 먼저 이동, 그다음 불 퍼지기
while q:
time, x, y = q.popleft()
# 지훈이 탈출
if time > -1 and arr[x][y] != 'F' and (x == 0 or y == 0 or x == n - 1 or y == m - 1):
ans = time + 1
break
for dx, dy in [(1,0),(-1,0),(0,-1),(0,1)]:
nx, ny = x+dx, y+dy
if 0 <= nx < n and 0 <= ny < m and arr[nx][ny] != '#':
# 지훈이 이동
if time > -1 and arr[nx][ny] == '.':
arr[nx][ny] = '_'
q.append((time + 1, nx, ny))
# 불 퍼뜨리기
elif time == -1 and arr[nx][ny] != 'F':
arr[nx][ny] = 'F'
q.append((-1, nx, ny))
print(ans)
'백준' 카테고리의 다른 글
10971. 외판원 순회 2 (0) | 2025.01.28 |
---|---|
백준 11724. 연결 요소의 개수 (0) | 2025.01.28 |
백준 1726. 로봇 (0) | 2025.01.26 |
백준 1260. DFS와 BFS (0) | 2025.01.25 |
백준 11559. Puyo Puyo (0) | 2025.01.23 |