-
7576번: 토마토
첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토
www.acmicpc.net
코드
from collections import deque m, n = map(int, input().split()) tree = list(list(map(int, input().split())) for _ in range(n)) que = deque([]) dx = [1,-1,0,0] dy = [0,0,1,-1] def bfs(): while que: x, y = que[0][0], que[0][1] del que[0] for i in range(4): n_x = x + dx[i] n_y = y + dy[i] if 0 <= n_x < n and 0 <= n_y < m: if tree[n_x][n_y] == 0: que.append([n_x, n_y]) tree[n_x][n_y] = tree[x][y] +1 for i in range(n): for j in range(m): if tree[i][j] == 1: que.append([i,j]) bfs() min = 0 zero = False for i in range(n): for j in range(m): if tree[i][j] == 0: zero = True break elif tree[i][j] > min and tree[i][j] != -1: min = tree[i][j] if zero == True: print(-1) elif min == 1: print(0) else: print(min -1)
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1753번 최단경로 (파이썬) (0) 2022.01.05 [백준] 7562번 나이트의 이동 (파이썬) (0) 2022.01.05 [백준] 2178번 미로 탐색 (파이썬) (0) 2022.01.05 [백준] 1012번 유기농 배추 (파이썬) (0) 2022.01.04 [백준] 2667번 단지번호붙이기 (파이썬) (0) 2022.01.04