[BOJ] 7576. ํ ๋งํ (python)
๐๋ฌธ์
๐ช์์ด๋์ด
์์ต์ ํ ๋งํ ์ ๊ฐฏ์ ์ธ๊ธฐ
์์ต์ ํ ๋งํ ๊ฐ 0๊ฐ๋ฉด 0์ถ๋ ฅ ํ ํ๋ก๊ทธ๋จ์ข ๋ฃ์ต์ ํ ๋งํ ์์น
๋์์ ํ ๋งํ ๋ค์ด ์ต๊ธฐ ์์ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ์ต์ ํ ๋งํ ๋ค์ ์์น๋ฅผ ์ฐพ์์ ์๊ฐ์ ์ธํ ํด์ผํ๋ค.๋ชจ๋ ํ ๋งํ ๊ฐ ์ต์ ๋๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ ์ธ๊ธฐ
์ต์ ํ ๋งํ ๋ฉด ์ํ์ข์ฐ๊ฒ์ฌํด์- ์์ต์ ํ ๋งํ ์ต์ ํ ๋งํ ๋ก ์ํ๋ฐ๊พธ๊ธฐ
- ์์ต์ ํ ๋งํ ๊ฐ์ -1
- day+=1
- queue๋ฃ๊ธฐ
bfs๋ฅผ ๋น ์ ธ๋์จ ์ํ์์ ๋ ์ต์ ํ ๋งํ ๊ฐ ์์ผ๋ฉด -1์ถ๋ ฅํ๊ธฐ
๐ฅ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import sys
from collections import deque
input = sys.stdin.readline
m,n = map(int,input().split())
ground=[]
unripe = 0
for _ in range(n):
ground.append(list(map(int,input().split())))
unripe += ground[-1].count(0)
if unripe == 0 : print(0)
else:
dy = (-1,0,1,0)
dx = (0,1,0,-1)
queue = deque()
for y in range(n):
for x in range(m):
if ground[y][x]==1:
queue.append((0,y,x))
while queue:
day,ny,nx = queue.popleft()
for i in range(4):
ey,ex = ny+dy[i], nx+dx[i]
if 0<=ey<n and 0<=ex<m:
if ground[ey][ex]==0:
unripe -=1
if unripe == 0:
print(day+1)
exit(0)
ground[ey][ex]=1
queue.append((day+1,ey,ex))
print(-1)
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.