Skip to content

Commit 0e6bebb

Browse files
committed
백준 7576번 토마토
문제 링크: https://www.acmicpc.net/problem/7576
1 parent 68d7d4c commit 0e6bebb

File tree

12 files changed

+113
-0
lines changed

12 files changed

+113
-0
lines changed

백준 7576번 토마토/main.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import sys
2+
from collections import deque
3+
from typing import List, Deque
4+
5+
6+
def solve():
7+
M, N = map(int, sys.stdin.readline().strip().split(' '))
8+
maps: List[List[int]] = [[0 for _ in range(M)] for _ in range(N)]
9+
queue: Deque = deque()
10+
11+
for row_idx in range(N):
12+
line = list(map(int, sys.stdin.readline().strip().split(' ')))
13+
for col_idx in range(M):
14+
maps[row_idx][col_idx] = line[col_idx]
15+
if maps[row_idx][col_idx] == 1:
16+
queue.append([row_idx, col_idx, 0])
17+
18+
answer = bfs(queue, maps, N, M)
19+
20+
for row_idx in range(N):
21+
for col_idx in range(M):
22+
if maps[row_idx][col_idx] == 0:
23+
print(-1)
24+
return
25+
26+
print(answer)
27+
28+
29+
def bfs(queue: Deque, maps: List[List[int]], row_max, col_max):
30+
answer: int = 0
31+
drc = [[-1, 0], [0, 1], [1, 0], [0, -1]]
32+
33+
while queue:
34+
rs, cs, v = queue.popleft()
35+
36+
for dr, dc in drc:
37+
nr, nc = rs + dr, cs + dc
38+
39+
if (0 <= nr < row_max) and (0 <= nc < col_max):
40+
if maps[nr][nc] == 0:
41+
maps[nr][nc] = 1
42+
queue.append([nr, nc, v + 1])
43+
answer = max(answer, v + 1)
44+
45+
return answer
46+
47+
48+
if __name__ == '__main__':
49+
solve()

백준 7576번 토마토/test1.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
6 4
2+
0 0 0 0 0 0
3+
0 0 0 0 0 0
4+
0 0 0 0 0 0
5+
0 0 0 0 0 1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
8

백준 7576번 토마토/test2.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
6 4
2+
0 -1 0 0 0 0
3+
-1 0 0 0 0 0
4+
0 0 0 0 0 0
5+
0 0 0 0 0 1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-1

백준 7576번 토마토/test3.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
6 4
2+
1 -1 0 0 0 0
3+
0 -1 0 0 0 0
4+
0 0 0 0 -1 0
5+
0 0 0 0 -1 1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6

백준 7576번 토마토/test4.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
5 5
2+
-1 1 0 0 0
3+
0 -1 -1 -1 0
4+
0 -1 -1 -1 0
5+
0 -1 -1 -1 0
6+
0 0 0 0 0
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
14

백준 7576번 토마토/test5.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2 2
2+
1 -1
3+
-1 1

0 commit comments

Comments
 (0)