-
알고리즘: 백준 7576번 토마토 (feat.python)알고리즘/백준(BaekJoon) 2021. 1. 6. 11:43
7576번: 토마토
첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토
www.acmicpc.net
import sys from collections import deque read = sys.stdin.readline x, y = list(map(int, read().split())) box = [] q_y = deque() q_x = deque() for i in range(y): tmp = list(map(int, read().split())) box.append(tmp) count_1 = 0 for i in range(len(box)): for j in range(len(box[0])): if box[i][j] == 1: q_y.append(i) q_x.append(j) count_1 += 1 def check(y, x): if 0<= y < len(box) and 0 <= x < len(box[0]) and box[y][x] == 0: return True else: return False def bfs(): dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] c = 0 count = deque(0 for _ in range(count_1)) while q_y and q_x: py = q_y.popleft() px = q_x.popleft() c = count.popleft() for i in range(4): if check(py + dy[i], px + dx[i]): q_y.append(py + dy[i]) q_x.append(px + dx[i]) box[py + dy[i]][px + dx[i]] = 1 count.append(c + 1) return c count = bfs() if count != 0: answer = count else: answer = 0 for sub in box: if 0 in sub: answer = -1 print(answer)
반응형'알고리즘 > 백준(BaekJoon)' 카테고리의 다른 글
알고리즘: 백준 1012번 유기농 배추 (feat. python) (0) 2021.01.07 알고리즘: 백준 1260번 DFS와 BFS (feat.python) (0) 2021.01.07 알고리즘: 백준 2606번 바이러스 (feat.python) (0) 2021.01.04 알고리즘: 백준 1015번 수열 정렬 (feat.python) (0) 2020.12.30 알고리즘: 백준 1002번 터렛 (feat. python) (0) 2020.12.30