반응형
7576번과 다른 부분은 토마토가 2차원 배치가 아닌 3차원 배치라는 점이다.
따라서 가로,세로 외에 높이라는 값을 적용해야했기에 3차 리스트를 만들어
stg[높이][세로][가로]로 토마토 값을 저장해 7576번처럼 시작점이 여러개인 bfs로 풀이를 진행하였다.
https://weallbinna.tistory.com/163
import sys
from collections import deque
que = deque()
input = sys.stdin.readline
clmn,row,lvl = map(int,input().split())
stg = [[]for i in range(lvl)]
for i in range(lvl):
for j in range(row):
stg[i].append(list(map(int,input().split())))
for i in range(lvl):
for j in range(row):
for k in range(clmn):
if stg[i][j][k] == 1:
que.append((i,j,k,0))
rst = 0
while que:
cur = que.popleft()
rst = cur[3]
for i in [(cur[0],cur[1]+1,cur[2]),(cur[0],cur[1]-1,cur[2]),(cur[0],cur[1],cur[2]+1),
(cur[0],cur[1],cur[2]-1),(cur[0]+1,cur[1],cur[2]),(cur[0]-1,cur[1],cur[2])]:
if 0<=i[0]<lvl and 0<=i[1]<row and 0<=i[2]<clmn and stg[i[0]][i[1]][i[2]] == 0: #익은 토마토 근처에 안익은 토마토가 있을때
stg[i[0]][i[1]][i[2]] = 1 #토마토가 익었다
que.append((i[0],i[1],i[2],cur[3]+1)) #대기열에 추가
for i in range(lvl): #안익은 토마토가 있는지
for j in range(row):
for k in range(clmn):
if stg[i][j][k] == 0:
print(-1)
exit(0)
print(rst)반응형
'알고리즘 문제들 으악 > 백준' 카테고리의 다른 글
| [python]🔥2206번 벽 부수고 이동하기 (0) | 2022.12.31 |
|---|---|
| [python]16928번 뱀과 사다리 게임 (0) | 2022.12.30 |
| [python]7576번 토마토, 시작점이 여러 개인 BFS (0) | 2022.12.28 |
| [python]7562번 나이트의 이동 (0) | 2022.12.25 |
| [python]9935번 문자열 폭발 (0) | 2022.12.24 |