-
백준 7569) 토마토 (골드.5)알고리즘/백준 2022. 7. 17. 20:22
https://www.acmicpc.net/problem/7569
이전에 푼 토마토 문제에서 방향만 z방향으로 더 추가된 문제이다.
https://dodop-blog.tistory.com/364
내가 푼 코드는 다음과 같다.
from collections import deque global m, n, tomato, day m, n, h = map(int, input().split()) tomato = [[list(map(int, input().split())) for _ in range(n)] for _ in range(h)] answer = 0 d = [(1, 0, 0), (-1, 0, 0), (0, 1, 0), (0, -1, 0), (0, 0, 1), (0, 0, -1)] def find_first_rotten_tomato(queue): global m, n, tomato for a in range(h): for b in range(n): for c in range(m): if tomato[a][b][c] == 1: queue.append((a, b, c, 0)) return queue def check_all_rotten(): global m, n, tomato for a in range(h): for b in range(n): for c in range(m): if tomato[a][b][c] == 0: return False return True def bfs(): global m, n, tomato, answer queue = find_first_rotten_tomato(deque()) if len(queue) == 0: answer = -1 return while queue: z, y, x, day = queue.popleft() answer = day for k in range(6): ny = y + d[k][0] nx = x + d[k][1] nz = z + d[k][2] if 0<=nz<h and 0<=ny<n and 0<=nx<m and tomato[nz][ny][nx]==0: tomato[nz][ny][nx] = 1 queue.append((nz, ny,nx, day+1)) if not check_all_rotten(): answer = -1 bfs() print(answer)
'알고리즘 > 백준' 카테고리의 다른 글
백준21610) 마법사 상어와 비바라기 (lv.골드5) (0) 2022.08.19 백준 1753) 최단경로 (골드.4) (0) 2022.07.20 백준 7576) 토마토 (골드.5) (0) 2022.07.17 백준 9663) N-Queen (골드.4) (0) 2022.07.17 백준 2580) 스도쿠 (골드.4) (0) 2022.07.16