코테 공부

백준 [7576] 토마토 (파이썬 풀이)

moonsun623 2021. 11. 24. 19:13
반응형

 

https://www.acmicpc.net/problem/7576

 

7576번: 토마토

첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토

www.acmicpc.net

 

내가 한 풀이

from collections import deque
dx,dy=[0,1,0,-1],[1,0,-1,0]

r,c=map(int,input().split())
road=[list(map(int,input().split())) for _ in range(c)]
day=0
queue=deque([])

for i in range(c):
    for j in range(r):
        if road[i][j]==1:
            queue.append([i,j])
def bfs():
    while queue:
        x,y=queue.popleft()
        for i in range(4):
            nx,ny=x+dx[i],y+dy[i]
            if 0<=nx<c and 0<=ny<r:
                if road[nx][ny]==0:
                    road[nx][ny]=road[x][y]+1
                    queue.append([nx,ny])
bfs()
for i in road:
    for j in i:
        if j==0:
            print(-1)
            exit(0)
    day=max(day,max(i))
print(day-1)