import sys
from collections import deque
input = sys.stdin.readline
M, N = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
dir = [
[1,0],
[-1,0],
[0,1],
[0,-1]
]
tomatoes = deque([])
for i in range(N):
for j in range(M):
if arr[i][j] == 1:
tomatoes.append([i,j])
while tomatoes:
y,x = tomatoes.popleft()
nextVal = arr[y][x] + 1
for d in dir:
ny = y + d[0]
nx = x + d[1]
if 0 <= nx < M and 0 <= ny < N and arr[ny][nx] == 0 :
arr[ny][nx] = nextVal
tomatoes.append([ny, nx])
def solution():
answer = 0
for i in arr:
for j in i:
if j == 0:
print(-1)
return
if j > answer :
answer = j
print(answer-1)
return
solution()
이것저것 다 생각해보다가 bfs로 익은토마토들 근처 토마토들 익히는(?) 것으로 했다.
leetcode에서 공부하고 싶은데 문제 추천은 죄다 백준이라.. 백준만 풀게된다 ㅎ
'컴퓨터 > 코테' 카테고리의 다른 글
카카오 매출하락 최소화 - 트리 dp (0) | 2021.09.10 |
---|---|
백준 5569, 11726 - 출근 경로, 2xn 타일링 [dp] (0) | 2021.09.08 |
프로그래머스 여행경로 - 백트래킹 (0) | 2021.09.06 |
릿코드 37- Sudoku Solver, nQueen 다시풀기 (0) | 2021.09.01 |
nQueen - 백트래킹 (0) | 2021.09.01 |