728x90
반응형
Silver I
# 7569 토마토
링크 : https://www.acmicpc.net/problem/7569
풀이
M, N, H = map(int, input().split())
house = []
floor = []
for k in range(H):
floor = [list(map(int, input().split())) for i in range(N)]
house.append(floor)
##
from collections import deque
def bfs(graph):
queue = deque()
for k in range(H):
for j in range(N):
for i in range(M):
if house[k][j][i] == 1:
queue.append((i, j, k))
dx = [0,0,-1,1,0,0]
dy = [1,-1,0,0,0,0]
dz = [0,0,0,0,1,-1]
while queue:
x, y, z = queue.popleft()
for i in range(6):
nx = x+dx[i]
ny = y+dy[i]
nz = z+dz[i]
if 0<=nx<M and 0<=ny<N and 0<=nz<H:
if house[nz][ny][nx] == 0:
queue.append((nx, ny, nz))
house[nz][ny][nx] = house[z][y][x] + 1
return graph
##
li = []
for i in bfs(house):
for j in i:
if 0 in j:
li.append(0)
else:
li.append(max(j))
if 0 in li:
print(-1)
else:
print(max(li)-1)
풀이 방법
세 부분으로 나누어서 풀이했다 ('##' 으로 구분 )
- 기본 입력
- bfs 정의
- 정답 출력을 위한 코드
풀이 후기
- 이전 토마토 문제에서 3차원 개념, 6 방향 탐색이 추가되었다
- 중간중간 풀이 방향을 잃지 않는다면 충분히 풀 수 있었다
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] # 1697 숨바꼭질 (0) | 2022.01.14 |
---|---|
[백준 파이썬] # 1158 요세푸스 문제 (0) | 2022.01.13 |
[백준 파이썬] # 7576 토마토 (0) | 2022.01.11 |
[백준 파이썬] # 2178 미로 탐색 (BFS 풀이) (0) | 2022.01.09 |
[백준 파이썬] # 1012 유기농 배추 (BFS 풀이) (0) | 2022.01.08 |