[BOJ] 7569 토마토 Python
2024. 1. 5. 12:58ㆍAlgorithm
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차원과 크게 다를 것이 없었다.
'Algorithm' 카테고리의 다른 글
[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 |