[๋ฐฑ์ค] ๋น์ฐ
[๋ฐฑ์ค] ๋น์ฐ
ํ์ด
๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
-
๋งค๋ ๋น์ฐ์ ๋์๋จ๋ถ์ 0์ ๊ฐ์์ ๋ฐ๋ผ ์นธ์ ์๋ ๋น์ฐ์ด ๋ค์ ๋ ๋์ ๋ น๋๋ค๋ ๊ฒ.
-
๋น์ฐ์ด 0 ์ผ ๊ฒฝ์ฐ, year = 0์ผ๋ก ์ถ๋ ฅ
-
๋น์ฐ์ด ๋ ๋ฉ์ด ์ด์์ผ ๊ฒฝ์ฐ, ๊ทธ ๋์ ๋ ๋ ์๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ.
์์ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์ถ๊ธฐ ์ํด์,
๋จผ์ bfs๋ฅผ ์ด์ฉํด ๋น์ฐ์ ๊ฐ์๋ฅผ ์ธ์๋ค. ๋น์ฐ์ ๊ฐ์๋ฅผ ์ธ๋ฉด์ ์ฃผ๋ณ์ 0์ ๊ฐ์๋ฅผ ๋ฐ๋ก ๋ฐ์ ๋ค๋ฅธ ์ด์ฐจ์ ๋ฆฌ์คํธ์ ๋ฃ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋น์ฐ์ ๊ฐ์๊ฐ 2๊ฐ ์ด์์ด๋ฉด, while๋ฌธ์ ๋๋ด๋๋ก ํ๊ณ ,
๋น์ฐ์ ๊ฐ์๊ฐ 0๊ฐ๋ผ๋ฉด, ๋ค ๋
น์๋ค๋ ์๋ฏธ์ด๋ฏ๋ก ์กฐ๊ฑด์ ๋ฐ๋ผ, year=0์ผ๋ก ์ถ๋ ฅํ๋ค.
์ ๋ ์กฐ๊ฑด์ด ์๋๋ผ๋ฉด, 1๋
์ ๋ํด์ฃผ๊ณ ํ์ฌ ๋น์ฐ ์ขํ์ bfs์์ ์ ์ฅํ ์ด์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ๋นผ์ฃผ์ด, ๋น์ฐ์ ๋
น์๋ค.
๊ทธ๋ฆฌ๊ณ while๋ฌธ์ ๋ค์ ์์ํ๋ค.
n, m = map(int, input().split())
graph = [list(map(int, input().split())) for _ in range(n)]
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
year, bing = 0, 0
def bfs(x, y, visit):
q = [[x,y]]
while q:
x, y = q[0]
q = q[1:]
for i in range(4):
mx = x + dx[i]
my = y + dy[i]
if 0<=mx<n and 0<=my<m:
if graph[mx][my] == 0:
graph_2[x][y] += 1
elif visit[mx][my] == False:
visit[mx][my] = True
q.append([mx, my])
def year_graph(graph, graph_2):
for i in range(n):
for j in range(m):
graph[i][j] = graph[i][j] - graph_2[i][j]
if graph[i][j] < 0:
graph[i][j] = 0
while bing==0:
visit = [[False] * m for _ in range(n)]
graph_2 = [[0]*m for _ in range(n)]
for i in range(n):
for j in range(m):
if graph[i][j] > 0 and visit[i][j] == False:
visit[i][j] = True
bfs(i, j, visit)
bing += 1
if bing >= 2:
break
elif bing == 0: # ์ค์ํ ๋ถ๋ถ
year = 0
break
else:
year += 1
year_graph(graph, graph_2)
bing = 0
print(year)
์ค์ ๋ฐ ๋ฐฐ์ด ์
-
๊ฐ์ฅ ๋จผ์ ์ค์ํ๋ ์ ์, dfs๋ฅผ ์ด์ฉํด์ ๋น์ฐ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ์ ์ด๋ค.
๊ณ์ Recursion Error ๊ฐ ๋ ์ ์ด์ ๋ฅผ ์ฐพ์๋ณด๋, ์ฌ๊ท ๊ด๋ จ ์๋ฌ์๊ณ Python์์ ์ ํ ์ต๋ ๊น์ด๋ณด๋ค
์ฌ๊ท์ ๊น์ด๊ฐ ๋ ๊น์ด์ก์ ๋ ์๊ธฐ๋ ์๋ฌ๋ค. BOJ์์๋ n=1000์ผ ๋๊ฐ ์ต๋์๋ค.
์ฌ๊ธฐ์๋ ์นธ์ ๊ฐ์๊ฐ 10,000 ์ด๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ์๊ธด ๊ฒ ๊ฐ๋ค. -
bfs๋ก ๋ฐ๊ฟ์ ํ๋ ๋ ๋ค๋ฅธ ์ค์๋ ๋น์ฐ์ bfs๋๋ฆฌ๋ฉด์ ๊ฐ์ด ๋ น์๋ ์ ์ด๋ค. 0์ ๊ฐ์๋ฅผ ํ์ธํ๊ณ ๋ฐ๋ก ๋ น์ธ๋ค๋ฉด,
๋ค์ ๋น์ฐ ์นธ ์์์ ์ด์ 0์ ๊ฐ์๋ฅผ ํ์ธํ ๋, ์๋ชป ์ ์ ๋ฐ์ ์๊ฒ ๋๋ค. -
๋น์ฐ์ด 0์ผ ๋, year ๊ฐ์ 0์ผ๋ก ๋ง๋๋ ๊ฒ ๋ํ, ์กฐ๊ฑด์ ์ ๋๋ก ํ์ธํ์ง ๋ชปํด์ ์ค์๊ฐ ์๊ฒผ๋ค.