[๋ฐฑ์ค 14940 ๐ฅ] ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ
https://www.acmicpc.net/problem/14940
14940๋ฒ: ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ
์ง๋์ ํฌ๊ธฐ n๊ณผ m์ด ์ฃผ์ด์ง๋ค. n์ ์ธ๋ก์ ํฌ๊ธฐ, m์ ๊ฐ๋ก์ ํฌ๊ธฐ๋ค.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) ๋ค์ n๊ฐ์ ์ค์ m๊ฐ์ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. 0์ ๊ฐ ์ ์๋ ๋ ์ด๊ณ 1์ ๊ฐ ์ ์๋ ๋ , 2๋ ๋ชฉํ์ง์ ์ด
www.acmicpc.net
๋ฌธ์
์ง๋๊ฐ ์ฃผ์ด์ง๋ฉด ๋ชจ๋ ์ง์ ์ ๋ํด์ ๋ชฉํ์ง์ ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ์ฌ๋ผ.
๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ค์ง ๊ฐ๋ก์ ์ธ๋ก๋ก๋ง ์์ง์ผ ์ ์๋ค๊ณ ํ์.
์ ๋ ฅ
์ง๋์ ํฌ๊ธฐ n๊ณผ m์ด ์ฃผ์ด์ง๋ค. n์ ์ธ๋ก์ ํฌ๊ธฐ, m์ ๊ฐ๋ก์ ํฌ๊ธฐ๋ค.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000)
๋ค์ n๊ฐ์ ์ค์ m๊ฐ์ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. 0์ ๊ฐ ์ ์๋ ๋ ์ด๊ณ 1์ ๊ฐ ์ ์๋ ๋ , 2๋ ๋ชฉํ์ง์ ์ด๋ค. ์ ๋ ฅ์์ 2๋ ๋จ ํ๊ฐ์ด๋ค.
์ถ๋ ฅ
๊ฐ ์ง์ ์์ ๋ชฉํ์ง์ ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ค. ์๋ ๊ฐ ์ ์๋ ๋ ์ธ ์์น๋ 0์ ์ถ๋ ฅํ๊ณ , ์๋ ๊ฐ ์ ์๋ ๋ ์ธ ๋ถ๋ถ ์ค์์ ๋๋ฌํ ์ ์๋ ์์น๋ -1์ ์ถ๋ ฅํ๋ค.

๋ฌธ์ ํ์ด
import sys
from collections import deque
n,m=map(int, sys.stdin.readline().split(' '))
area=[list(map(int, sys.stdin.readline().split(' '))) for _ in range(n)]
visited = [[0] * (m) for _ in range(n)]
dist=[[0]*(m) for _ in range(n)]
def bfs(starty, startx):
global visited, area, dist
queue=deque()
queue.append((starty, startx,0))
visited[starty][startx]=1
directions=[(0,1),(1,0),(0,-1),(-1,0)]
while queue:
y,x,d=queue.popleft()
for di in directions:
dy=y+di[0]
dx=x+di[1]
if 0<=dy<n and 0<=dx<m and visited[dy][dx]==0 and area[dy][dx]==1:
queue.append((dy,dx,d+1))
dist[dy][dx]=d+1
visited[dy][dx]=1
# ์์ ์ง์ ์ฐพ๊ธฐ
for i in range(n):
for j in range(m):
if area[i][j]==2:
bfs(i,j)
# ์ถ๋ ฅํ๊ณ ,ํ๋ก๊ทธ๋จ ์ข
๋ฃ
for y in range(n):
for x in range(m):
# ๊ธฐ์กด์ ๊ฐ ์ ์๋ ๊ฒฝ๋ก์ง๋ง, ๋ชฉ์ ์ง์ ๋๋ฌํ ์ ์๋ ์ง์ญ์ธ ๊ฒฝ์ฐ
if dist[y][x]==0 and area[y][x]==1:
dist[y][x]=-1
for y in range(n):
print(*dist[y], sep=' ')
sys.exit(0)
- BFS๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ๋จํ ๋ฌธ์ ๋ค!
- ์ ๋ ฅ๋ฐ์ ์ง์ ์ ์ ๋ณด ๋ฐฐ์ด area๋ฅผ ๋๋ฉด์, area ๊ฐ์ด 2์ธ ๋ชฉํ์ง์ ์ ์ฐพ์์ ๊ทธ ์์น๋ถํฐ bfs๋ฅผ ๋๋ฉด์ ์ํ์ข์ฐ๋ก ๋ชฉํ์ง์ ์ผ๋ก๋ถํฐ ๋ช ๋ฒ์งธ๋ก ๋ฐฉ๋ฌธํ๋ ์์น์ธ์ง ๋ณ์ d์ ์ ์ฅํด์ฃผ๊ณ ๊ฐ ์ง์ ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ dist ๋ฐฐ์ด์ ๊ฐฑ์ ํด์ฃผ๋ฉด ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด์ ๊ฐ ์ ์๋ ๊ฒฝ๋ก์ง๋ง(area ๊ฐ์ด 1), ๋ชฉ์ ์ง์ ๋๋ฌํ ์ ์๋ ์ง์ญ์ด๋ผ dist ๊ฐ์ด 0์ธ ์์น๋ -1๋ก ๊ฐฑ์ ํด์ค๋ค.