728x90
๋ฐ์ํ
https://softeer.ai/practice/info.do?idx=1&eid=411
Softeer
์ฐ์ต๋ฌธ์ ๋ฅผ ๋ด์ Set์ ์ ํํด์ฃผ์ธ์. ์ทจ์ ํ์ธ
softeer.ai
๋ฌธ์


ํ์ด
BFS๋ฅผ ์ฌ์ฉํ์ฌ ํ์
์ ์ด๋ 2๋ฒ ์ด์ ์ธ๋ถ ๊ณต๊ธฐ์ ์ ์ดํ ์ผ์์ ๊ณ ๋ คํด์ผํ๋ฏ๋ก ์ผ์์ ๋ง๋ฌ์ ๋ countํด์ฃผ๊ณ 2๋ฒ ์ด์ count๋ ๊ฒฝ์ฐ ์ผ์์ ๋ น์ด๋ ๊ฒ์ผ๋ก ํด๊ฒฐ.
์ผ์์ด ์๋๋ฐ ๋ฐฉ๋ฌธํ์ง ์์๋ ๊ฒฝ์ฐ, ์ฃผ๋ณ ํ์์ ์ํด queue์ ์ถ๊ฐ
์ฝ๋
import sys
from collections import deque
N, M = map(int, input().split())
grid = [list(map(int, sys.stdin.readline().split())) for _ in range(N)]
def BFS() :
dx = [1, 0, -1, 0]
dy = [0, -1, 0, 1]
queue = deque()
visited = [[0] * M for _ in range(N)]
# ์ฒซ ๋ฒ์งธ ์์์
queue.append([0,0])
visited[0][0] = 1
while queue :
y, x = queue.popleft()
for i in range(4) :
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or nx >= M or ny < 0 or ny >= N :
continue
if grid[ny][nx] == 1 : # ์ผ์์ธ ๊ฒฝ์ฐ
visited[ny][nx] += 1
elif visited[ny][nx] == 0 : # ์ผ์์ด ์๋๊ณ ๋ฐฉ๋ฌธํ์ง ์์ ๊ฒฝ์ฐ queue์ ์ถ๊ฐ
queue.append([ny, nx])
visited[ny][nx] = 1
for i in range(N) :
for j in range(M) :
if visited[i][j] >= 2 : # ์ ์ด๋ 2๋ณ ์ด์ ์ธ๋ถ ๊ณต๊ธฐ์ ์ ์ดํ ๊ฒฝ์ฐ
grid[i][j] = 0 # ์ผ์ ๋
น์
time = 0
# ์ผ์ ๋ค ๋
น์ ๋๊น์ง ๋ฐ๋ณต
while True :
if grid.count(grid[0]) == N : # ์ข
๋ฃ ์กฐ๊ฑด
break
BFS()
time += 1
print(time)728x90
๋ฐ์ํ
'Programming > Softeer' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Softeer][level3] GINI์ผ ๋์์ค (python) (0) | 2023.09.26 |
|---|---|
| [Softeer][level3] ์ค๋งํธ ๋ฌผ๋ฅ (python) (0) | 2023.09.23 |
| [Softeer][level3] ํ๋ฐฐ ๋ง์คํฐ ๊ด์ฐ (python) (0) | 2023.09.22 |
| [Softeer][level3] ์ฐ๋ฌผ ์ ๊ฐ๊ตฌ๋ฆฌ (python) (0) | 2023.09.22 |
| [Softeer][level3] ์กฐ๋ฆฝ ๋ผ์ธ (python) (0) | 2023.09.22 |