본문 바로가기

컴퓨터/코테

백준 7576 - 토마토

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에서 공부하고 싶은데 문제 추천은 죄다 백준이라.. 백준만 풀게된다 ㅎ