728x90
from collections import deque
M,N,H = map(int,input().split())
cnt = 0
deq = deque() #다 익은 애들 deq에 넣어서 해결
box = [[[0 for _ in range (0,M)] for _ in range (0,N)] for _ in range (0,H)]
for i in range (0,H): #높이 정보
    floor_box = []
    for j in range (0,N): #가로 정보
        A = list(map(int,input().split()))
        for k in range (0,len(A)):
            box[i][j][k] = A[k]
            if A[k] == 0: #안 익은애들
                cnt += 1
            if A[k] == 1:
                deq.append([i,j,k])
dx,dy,dz = [1,-1,0,0,0,0], [0,0,1,-1,0,0], [0,0,0,0,1,-1]
if cnt == 0:
    print(0)
if cnt != 0:
    day = 0
    while True:
        if cnt == 0:
            print(day)
            break
        if len(deq) == 0:
            print(-1)
            break
        day += 1
        tomato = []
        while deq:
            a = deq.popleft() #list의 형태로 출력됨
            for i in range (0,6):
                z,y,x = a[0] + dx[i], a[1] + dy[i], a[2] + dz[i]
                if 0 <= x < M and 0 <= y < N and 0 <= z < H and box[z][y][x] == 0:
                    box[z][y][x] = 1
                    tomato.append([z,y,x])
                    cnt -= 1
        for i in range (0,len(tomato)):
            deq.append(tomato[i])

 

3차원인 점을 제외하고는 2차원과 크게 다를 것이 없었다.

'코딩' 카테고리의 다른 글

[BOJ] 1503 세 수 고르기 Python  (0) 2024.01.10
[BOJ] 10026 적록색약 Python  (1) 2024.01.05
[BOJ] 2312 수 복원하기 Python  (1) 2024.01.04
[BOJ] 1334 다음 팰린드롬 수  (0) 2023.12.31
[BOJ] 11055 가장 큰 증가하는 부분 수열  (1) 2023.12.17

+ Recent posts