from collections import deque
m,n,h=map(int, input().split())
arr=[[list(map(int, input().split())) for _ in range(n)] for _ in range(h)]4
def dfs(graph,m,n,h):
day=-1
queue=deque()
dx=[0,0,1,-1,0,0]
dy=[0,0,0,0,1,-1]
dz=[1,-1,0,0,0,0]
for i in range(h):
for j in range(n):
for k in range(m):
if graph[i][j][k]==1:
queue.append((i,j,k))
while queue:
day+=1
for _ in range(len(queue)):
z,y,x=queue.popleft()
for i in range(6):
nx=x+dx[i]
ny=y+dy[i]
nz=z+dz[i]
if nx<0 or nx>=m or ny<0 or ny>=n or nz<0 or nz>=h:
continue
elif graph[nz][ny][nx]==0:
graph[nz][ny][nx]=1
queue.append((nz,ny,nx))
for i in range(h):
for j in range(n):
for k in range(m):
if graph[i][j][k]==0:
return -1
return day
while 시작하자마자 day+=1 하는거밖에 생각이 안나서 day를 -1로 두고 시작했음.
그리고 z y x 순으로 하는게 빠르다고 주워들어서 했는데,별 차이가 없어서 앞으로는 xyz 순으로 할거임.
근데 관습적으로(?) zyx 순으로 한다네. 나는 3차원으로 처음 풀어봐서 앞으로 좀 더 봐야할 듯
생각해보니까 이것도 bfs니까 day라는 변수 안쓰고 graph[x][y][z]에 저장해도 됐겠다.
'코테 공부' 카테고리의 다른 글
| 백준 9095 1, 2, 3 더하기(python) (0) | 2024.11.18 |
|---|---|
| 백준 1463 1로 만들기(python) (0) | 2024.11.18 |
| 백준 2644번 촌수계산(python) (0) | 2024.11.17 |
| 백준 2667 단지번호 붙이기 (python) (1) | 2024.11.15 |
| 구름 소금물의 농도 구하기 (python) (1) | 2024.11.15 |