코테 공부

백준 7569 토마토(python)

dnjswngo 2024. 11. 17. 17:35
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]에 저장해도 됐겠다.