취준시절/백준

[백준 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