취준시절/백준
[백준 7569] Python - 토마토
MAYMIN
2021. 8. 24. 00:02
728x90
SMALL
아뉘 이 문제 너무 헷갈렸음 ㅠㅠㅠ
복잡했당....ㅜ_ㅜ
큰일이군 ............................. 😥
넘 헷갈려서 그림으로 안 그려놓으면 계속 버벅댔음 ㅎㅎㅎ.....
그림 필수였다 배열관련해서 개념 더 빠삭하게해야겠음 !!!!!!!!!!!!!!!!! ㅠ
from collections import deque
# 앞 , 뒤 , 왼쪽, 오른쪽 , 아래 , 위
directions = [[1,0,0],[-1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]]
queue = deque()
def bfs():
while queue:
#z,x,y = queue.popleft()
x, y,z = queue.popleft()
for i in directions:
nx = x + i[0]
ny = y + i[1]
nz = z + i[2]
if 0<=ny<n and 0<= nz <m and 0<=nx<h:
if box[nx][ny][nz]==0:
box[nx][ny][nz] = box[x][y][z] + 1
queue.append((nx, ny,nz))
# m : 왼오 , n : 앞뒤 , h : 위아래
m,n,h = map(int,input().split())
box = [[list(map(int,input().split())) for _ in range(n)] for _ in range(h)]
# 1 : 익은 토마토 ,W 0 : 안 익은 토마토 , -1 : 토마토가 없음
for i in range(h):
for j in range(n):
for k in range(m):
if box[i][j][k] ==1:
queue.append((i, j, k))
bfs()
check = 1
maxnum=-1
for i in box:
for j in i:
for k in j:
if k==0:
check=0
break
maxnum=max(k,maxnum)
if check==0:
print(-1)
elif maxnum==1:
print(0)
else:
print(maxnum-1)
728x90
LIST