반응형
문제 설명
입출력 예제
풀이 코드
이 문제는 이전의 7576번 토마토 문제와 유사하지만 3차원 배열을 사용한다는 점이 다르다.
3차원 배열을 사용한다는 점과, 6방향(앞,뒤,상,하,좌,우)로 움직인다는 점에 유의하자
정답 코드
from collections import deque
import sys
input = sys.stdin.readline
m, n, h = map(int, input().split()) # 열, 행, 상자수
boxes = [[list(map(int, input().split())) for _ in range(n)] for _ in range(h)]
result = 0
q = deque()
dx = [-1,1,0,0,0,0]
dy = [0,0,-1,1,0,0]
dz = [0,0,0,0,-1,1]
def bfs():
while q:
box, x, y = q.popleft()
for i in range(6):
nx = x + dx[i]
ny = y + dy[i]
nbox = box + dz[i]
if 0 <= nbox < h and 0 <= nx < n and 0 <= ny < m:
if boxes[nbox][nx][ny] == 0:
q.append((nbox, nx, ny))
boxes[nbox][nx][ny] = boxes[box][x][y] + 1
for box in range(h):
for x in range(n):
for y in range(m):
if boxes[box][x][y] == 1:
q.append((box, x, y))
bfs()
for box in boxes:
for x in box:
for y in x:
if y == 0:
print(-1)
exit(0)
result = max(result, max(x))
print(result-1)
'◼ 코딩테스트 > DFS,BFS' 카테고리의 다른 글
[Python/파이썬] 백준 16236 - 아기 상어 (0) | 2023.05.24 |
---|---|
[Python/파이썬] 백준 7562 - 나이트의 이동 (0) | 2023.05.23 |
[Python/파이썬] 백준 14502 연구소 - (BFS + 백트래킹) (0) | 2023.05.22 |
[Python/파이썬] 백준 7576 - 토마토 (0) | 2023.05.21 |
[Python/파이썬] 백준 1937 - 욕심쟁이 판다 (0) | 2023.05.19 |