https://www.acmicpc.net/problem/6593
코드
from collections import deque
dx = [1, -1, 0, 0, 0, 0]
dy = [0, 0, 1, -1, 0, 0]
dz = [0, 0, 0, 0, 1, -1]
while True:
l, r, c = map(int, input().split())
if l == 0 and r == 0 and c == 0:
break
q = deque()
visited = [[[False]*c for _ in range(r)] for _ in range(l)]
dest = []
cube = [[] for _ in range(l)]
for i in range(l):
for j in range(r):
row = input()
for k in range(c):
if row[k] == 'S': # 시작점
visited[i][j][k] = True
q.append((i, j, k, 0))
elif row[k] == 'E': # 출구
dest = [i, j, k]
cube[i].append(row)
tmp = input()
ans = -1
# BFS
while q:
x, y, z, cnt = q.popleft()
if [x, y, z] == dest:
ans = cnt
break
for i in range(6):
nx = x+dx[i]
ny = y+dy[i]
nz = z+dz[i]
if 0 <= nx < l and 0 <= ny < r and 0 <= nz < c and not visited[nx][ny][nz] and cube[nx][ny][nz] != '#':
q.append((nx, ny, nz, cnt+1))
visited[nx][ny][nz] = True
print(f"Escaped in {ans} minute(s)." if ans != -1 else "Trapped!")
'문제풀이 > DFS_BFS' 카테고리의 다른 글
[Javascript/자바스크립트] 백준 1260번 DFS와 BFS (0) | 2024.06.20 |
---|---|
[Python/파이썬] SW Expert Academy 1219번 길찾기 (0) | 2024.06.15 |
[Python/파이썬] 백준 16920번 확장 게임 (0) | 2024.06.02 |
[Python/파이썬] 백준 1743번 음식물 피하기 (0) | 2024.05.29 |
[Python/파이썬] 백준 2589번 보물섬 (0) | 2024.05.21 |
https://www.acmicpc.net/problem/6593
코드
from collections import deque dx = [1, -1, 0, 0, 0, 0] dy = [0, 0, 1, -1, 0, 0] dz = [0, 0, 0, 0, 1, -1] while True: l, r, c = map(int, input().split()) if l == 0 and r == 0 and c == 0: break q = deque() visited = [[[False]*c for _ in range(r)] for _ in range(l)] dest = [] cube = [[] for _ in range(l)] for i in range(l): for j in range(r): row = input() for k in range(c): if row[k] == 'S': # 시작점 visited[i][j][k] = True q.append((i, j, k, 0)) elif row[k] == 'E': # 출구 dest = [i, j, k] cube[i].append(row) tmp = input() ans = -1 # BFS while q: x, y, z, cnt = q.popleft() if [x, y, z] == dest: ans = cnt break for i in range(6): nx = x+dx[i] ny = y+dy[i] nz = z+dz[i] if 0 <= nx < l and 0 <= ny < r and 0 <= nz < c and not visited[nx][ny][nz] and cube[nx][ny][nz] != '#': q.append((nx, ny, nz, cnt+1)) visited[nx][ny][nz] = True print(f"Escaped in {ans} minute(s)." if ans != -1 else "Trapped!")
'문제풀이 > DFS_BFS' 카테고리의 다른 글
[Javascript/자바스크립트] 백준 1260번 DFS와 BFS (0) | 2024.06.20 |
---|---|
[Python/파이썬] SW Expert Academy 1219번 길찾기 (0) | 2024.06.15 |
[Python/파이썬] 백준 16920번 확장 게임 (0) | 2024.06.02 |
[Python/파이썬] 백준 1743번 음식물 피하기 (0) | 2024.05.29 |
[Python/파이썬] 백준 2589번 보물섬 (0) | 2024.05.21 |