https://www.acmicpc.net/problem/6593
풀이
BFS 알고리즘을 사용해서 문제를 풀어주었습니다.
3차원 리스트이기에 주의해서 짜주시면 됩니다.
코드
# 6593번 상범 빌딩
import sys
from collections import deque
dxyzs = ((0,0,1), (0,0,-1), (1,0,0), (-1,0,0), (0,1,0), (0,-1,0))
while True:
L, R, C = map(int, sys.stdin.readline().split())
if L == 0:
break
ex, ey, ez = 0, 0, 0
grid = []
visited = [[[False]*C for _ in range(R)] for _ in range(L)]
queue = deque([])
for z in range(L):
floor = []
for y in range(R):
li = list(sys.stdin.readline().rstrip() )
floor.append(li)
for x in range(C):
if li[x] == 'S':
visited[z][y][x] = 1
queue.append([x, y, z])
if li[x] == 'E':
ex, ey, ez = x, y, z
sys.stdin.readline()
grid.append(floor)
flag = False
while queue:
cx, cy, cz = queue.popleft()
if grid[cz][cy][cx] == "E":
flag = True
break
for dx, dy, dz in dxyzs:
nx = cx + dx
ny = cy + dy
nz = cz + dz
if 0 <= nx < C and 0 <= ny < R and 0 <= nz < L and grid[nz][ny][nx] != "#" and visited[nz][ny][nx] == False:
visited[nz][ny][nx] = visited[cz][cy][cx] + 1
queue.append([nx, ny, nz])
if flag:
print(f'Escaped in {visited[ez][ey][ex] - 1} minute(s).')
else:
print("Trapped!")
출력결과
'백준 > DFS&BFS' 카테고리의 다른 글
[백준][Python] 18405번 경쟁적 전염 - 코팩 (0) | 2023.09.27 |
---|---|
[백준][Python] 6118번 숨바꼭질 - 코팩 (0) | 2023.09.01 |
[백준][Python] 2573번 빙산 - 코팩 (0) | 2023.05.24 |
[백준][Python] 1987번 알파벳 - 코팩 (0) | 2023.05.22 |
[백준][Python] 17836번 공주님을 구해라! - 코팩 (0) | 2023.04.04 |