728x90
2022.01.11
백준 7576 토마토
#7576
from collections import deque
M, N = map(int, input().split())
arr = []
for i in range(N):
arr.append(list(map(int,input().split())))
def BFS(graph):
queue = deque()
for i in range(N):
for j in range(M):
if arr[i][j] == 1:
queue.append((i,j)) #토마토가 여러개 있을 때를 해결
dx = [0,0,-1,1]
dy = [-1,1,0,0]
while queue:
a, b = queue.popleft()
for i in range(4):
nx = a + dx[i]
ny = b + dy[i]
if 0 <= nx < N and 0 <= ny < M:
if arr[nx][ny] == 0:
queue.append((nx,ny))
arr[nx][ny] = arr[a][b] + 1
BFS(arr)
R = []
for i in range(N):
if 0 in arr[i]:
R.append(0)
else:
R.append(max(arr[i]))
if 0 in R:
print(-1)
else:
print(max(R)-1)
토마토가 여러 개 존재하면 어떻게 풀지?라는 의문을 반복문을 통해 해결했더니
다른 BFS 문제와 별다를 게 없었다. 또 다른 점이라면 출력 조건이 좀 많다는 점?
728x90
'Algorithm' 카테고리의 다른 글
백준 1181 파이썬 (0) | 2022.01.12 |
---|---|
백준 1085 파이썬 (0) | 2022.01.11 |
백준 1018 파이썬 (0) | 2022.01.11 |
백준 10951 파이썬 (0) | 2022.01.10 |
백준 10871 파이썬 (0) | 2022.01.10 |