728x90
문제 요약
n * m 사이즈 토마토 보관 상자
익은 토마토 인접한 곳에 있는 건 영향 받아 익게 됨.
창고에 보관한 토마토들이 최소 며칠 지나면 다 익게 되는지!
단, 상자의 일부 칸에는 토마토가 들어있지 않을 수도 있다.
M,N은 2부터 1000
1은 익은 토마토, 0은 안 익은 토마토, -1은 토마토 없음
토마토는 최소 하나 있다고 한다.
모두 익을 때까지의 최소 날짜를 출력하되,
모든 토마토가 익어있다면 0 출력, 모두 익지 못하는 상황이라면 -1을 출력한다.
풀이
이 문제는 BFS로 풀어야 하는 문제다.
하루가 지날 때마다 영향을 받아 익게 되기 때문.
from collections import deque
m, n = map(int, input().split()) # 가로, 세로
graph = []
for i in range(n):
x = list(map(int, input().split()))
graph.append(x)
queue = deque()
directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
# 초기에 익은 토마토 위치 큐에 삽입
for i in range(n):
for j in range(m):
if graph[i][j] == 1:
queue.append((i, j))
def bfs():
while queue:
x, y = queue.popleft()
for dx, dy in directions:
nx, ny = x + dx, y + dy
if 0 <= nx < n and 0 <= ny < m and graph[nx][ny] == 0:
graph[nx][ny] = graph[x][y] + 1
queue.append((nx, ny))
bfs()
max_days = 0
for row in graph:
for value in row:
if value == 0: # 0이 존재한다면 모든 토마토가 익지 못한다는 뜻
print(-1)
exit()
max_days = max(max_days, value)
print(max_days - 1) # 처음 토마토 제외
728x90
728x90
문제 요약
n * m 사이즈 토마토 보관 상자
익은 토마토 인접한 곳에 있는 건 영향 받아 익게 됨.
창고에 보관한 토마토들이 최소 며칠 지나면 다 익게 되는지!
단, 상자의 일부 칸에는 토마토가 들어있지 않을 수도 있다.
M,N은 2부터 1000
1은 익은 토마토, 0은 안 익은 토마토, -1은 토마토 없음
토마토는 최소 하나 있다고 한다.
모두 익을 때까지의 최소 날짜를 출력하되,
모든 토마토가 익어있다면 0 출력, 모두 익지 못하는 상황이라면 -1을 출력한다.
풀이
이 문제는 BFS로 풀어야 하는 문제다.
하루가 지날 때마다 영향을 받아 익게 되기 때문.
from collections import deque
m, n = map(int, input().split()) # 가로, 세로
graph = []
for i in range(n):
x = list(map(int, input().split()))
graph.append(x)
queue = deque()
directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
# 초기에 익은 토마토 위치 큐에 삽입
for i in range(n):
for j in range(m):
if graph[i][j] == 1:
queue.append((i, j))
def bfs():
while queue:
x, y = queue.popleft()
for dx, dy in directions:
nx, ny = x + dx, y + dy
if 0 <= nx < n and 0 <= ny < m and graph[nx][ny] == 0:
graph[nx][ny] = graph[x][y] + 1
queue.append((nx, ny))
bfs()
max_days = 0
for row in graph:
for value in row:
if value == 0: # 0이 존재한다면 모든 토마토가 익지 못한다는 뜻
print(-1)
exit()
max_days = max(max_days, value)
print(max_days - 1) # 처음 토마토 제외
728x90