https://www.acmicpc.net/problem/7569
시간 1초, 메모리 256MB
input :
output :
조건 :
일단 2차원 배열을 받아서 이 상자를 H개 쌓아서 3차원 배열을 만드는 것이다
graph = [[list(map(int, sys.stdin.readline().split())) for i in range(n)] for j in range(h)]
n번 입력을 받음으로, 배열 내부에서 2차원 배열을 만들고 이를 h번 반복하는 것.
그외의 경우는 기본 bfs와 동일하다.
그리고 3차원 배열을 탐색할 때에는 graph[nz][nx][ny] 순서로, z축, x축, y축 순서이다. 잊지말자.
최소 일수를 구해야 하니, 계속 업데이트를 해줘야 한다.
while q:
z, x, y, day = q.popleft()
for i in range(6):
nx = x + dx[i]
ny = y + dy[i]
nz = z + dz[i]
if nx < 0 or nx >= n or ny < 0 or ny >= m or nz < 0 or nz >= h:
continue
if graph[nz][nx][ny] == 0:
graph[nz][nx][ny] = 1
q.append((nz, nx, ny, day + 1))
ans = max(ans, day)
그리고 마지막에 이 배열에 아직익지 않은 토마토(0)가 존재하는지 확인해 주어야 한다.
for z in range(h):
for x in range(n):
for y in range(m):
if graph[z][x][y] == 0:
ans = -1