백준 python 기록
백준 파이썬 6593 상범 빌딩
우히힝
2022. 2. 26. 16:02
https://www.acmicpc.net/problem/6593
6593번: 상범 빌딩
당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어
www.acmicpc.net
굉장히 노가다를 강요하는 BFS문제였읍니다.
하면서 아 변수명좀 제대로 지을걸.. 이라는 생각이 절로 드는 문제였읍니다.
from collections import deque
while True:
L, R, C = map(int,input().split())
if (L + R + C) == 0:
exit()
building = []
visited = [[[0]*C for _ in range(R)] for _ in range(L)]
S = []
E = []
for _ in range(L):
building.append([list(input()) for i in range(R)])
input()
for z in range(L):
for x in range(R):
for y in range(C):
if building[z][x][y] == "S":
S =[x,y,z]
visited[z][x][y] = 1
if building[z][x][y] == "E":
E =[x,y,z]
dx = [-1,1,0,0,0,0]
dy = [0,0,-1,1,0,0]
dz = [0,0,0,0,-1,1]
queue = deque([])
queue.append(S)
flag = False
while queue:
x,y,z = queue.popleft()
for i in range(6):
nx = x + dx[i]
ny = y + dy[i]
nz = z + dz[i]
if 0 <= nx < R and 0 <= ny < C and 0 <= nz < L:
if visited[nz][nx][ny] == 0:
if building[nz][nx][ny] == "." or building[nz][nx][ny] == 'E':
visited[nz][nx][ny] = visited[z][x][y] + 1
queue.append([nx,ny,nz])
if visited[E[2]][E[0]][E[1]] == 0:
print("Trapped!")
else:
print("Escaped in %d minute(s)." % (visited[E[2]][E[0]][E[1]]-1))