- 문제 : https://www.acmicpc.net/problem/7569
- 정답 풀이 :
이전에 풀었던 토마토와 풀이는 비슷한데, 3중 행렬이라 약간 다르다.
이거는 리스트 하나만 더 추가한 뒤 그거에 맞춰서 진행해주면 된다
스스로 푼 문제!! Gold Level 5 문제다
from collections import deque
import sys
input=sys.stdin.readline
n,m,h=map(int,input().split())
data=[[] for _ in range(h)]
tomato=deque()
flag=False
for i in range(h):
for j in range(m):
data[i].append(list(map(int,input().split())))
for k in range(n):
if data[i][j][k]==1:
tomato.append((i,j,k))
if data[i][j][k]==0:
flag=True
direct=[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]]
def bfs():
while tomato:
a,b,c=tomato.popleft()
for i in range(6):
na,nb,nc=a+direct[i][0],b+direct[i][1],c+direct[i][2]
if 0<=na<h and 0<=nb<m and 0<=nc<n:
if data[na][nb][nc]==0:
data[na][nb][nc]=data[a][b][c]+1
tomato.append((na,nb,nc))
bfs()
if not flag:
print(0)
else:
minNum,maxNum=10**9,0
for i in range(h):
for j in range(m):
if 0 in data[i][j]:
minNum=0
else:
maxNum=max(max(data[i][j]),maxNum)
if minNum==0:
print(-1)
else:
print(maxNum-1)
'백준 > Search' 카테고리의 다른 글
[dfs/백준] 11725번 : 트리의 부모 찾기 (0) | 2022.07.26 |
---|---|
[bfs/백준] 10026번 : 적록색약 (0) | 2022.07.24 |
[bfs/백준] 4963번 : 섬의 개수 (0) | 2022.07.23 |
[dfs,bfs/백준] 14502번: 연구소 (0) | 2022.07.23 |
[dfs/백준] 11724번 : 연결 요소의 개수 (0) | 2022.07.21 |