18405๋ฒ - ๊ฒฝ์์ ์ ์ผ
ํ๋ ฌ์ด ์ฃผ์ด์ก์ ๋ 1์ด๋ค 1~3๊น์ง์ ๋ฐ์ด๋ฌ์ค๊ฐ ์ํ์ข์ฐ ํ ์นธ์ฉ ์๊ธฐ ์์ ์ผ๋ก ๊ฐ์ผ์ ์ํต๋๋ค.
N์ด๊ฐ ์ง๋ฌ์ ๋, ํ๋ ฌ์ X,Y์ขํ์ ์ด๋ค ๋ฐ์ด๋ผ์ค๊ฐ ์๋์ง ๊ตฌํ๋ฉด ๋๋ ๋ฌธ์ ์
๋๋ค.
N,K = map(int,input().split())
graph = []
que = deque()
for _ in range(N):
graph.append(list(map(int,input().split())))
S,X,Y = map(int,input().split())
ํ๋ ฌํฌ๊ธฐ์ ๋ฐ์ด๋ฌ์ค์ ์ข ๋ฅ, ๊ทธ๋ํ์ ์๊ฐ ๋ฐ ์ต์ข ์ขํ๋ฅผ ์ ๋ ฅ๋ฐ๊ฒ ์ต๋๋ค.
for k in range(1,K+1):
for i in range(N):
for j in range(N):
if graph[i][j] == k:
que.append([i,j])
1~K๊น์ง์ ๋ฐ์ด๋ฌ์ค๋ฅผ ์ฐจ๋ก๋๋ก BFS์์ ๋ฃ์ด์ ์ ์ผ์ ์์ผ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
dx = [-1,1,0,0]
dy = [0,0,1,-1]
def bfs():
for _ in range(S):
for _ in range(len(que)):
์ด ๋ถ๋ถ์ด ํต์ฌ์ ๋๋ค. BFS์ ํ์ while que์๋ ๋ค๋ฅด๊ฒ 1์ด,2์ด,3์ด... ์ผ๋ que์ ๊ธธ์ด๋งํผ (ํด๋น ์ด์ ๊ฒ์ฌํด์ผํ๋ ์ํ๊ด ์) ๋ฐ๋ณตํ์ฌ
x,y = que.popleft()
for i in range(4):
nx = dx[i] + x
ny = dy[i] + y
if nx<0 or ny<0 or nx>=N or ny>=N:
continue
4๋ฐฉํฅ ๊ฒ์ฌ๋ฅผ ์ค์ํด์ฃผ๊ณ
if graph[nx][ny] == 0:
que.append([nx,ny])
graph[nx][ny] = graph[x][y]
๋ง์ฝ ๋ฐ์ด๋ฌ์ค๊ฐ ๊ฐ์ผ ์๋ ๊ตฌ๊ฐ์ด ์๋ค๋ฉด ์ ์ํ๊ด์ ์ ํ ๋ฐ์ด๋ฌ์ค๋ก ๊ฐ์ผ์ ์์ผ์ฃผ๊ณ ํด๋น ๊ตฌ๊ฐ๋ ๊ฒ์ฌ ์์ ์ ํฌํจ์ํค๋๋ก ํฉ์๋ค.
์์๋ฅผ ๋ณด๋ฉด
1์ด-> 1,2,3....๋ฐ์ด๋ฌ์ค๊ฐ ์ ํ ์ํ์ข์ฐ ํ์นธ๋ง ๊ฐ์ผ ์คํ (๋ค์ ํ๋ณด que์ append)
2์ด-> 1,2,3....๋ฐ์ด๋ฌ์ค๊ฐ ์ ํ ๋ค์ ํ๋ณด๋ค ์ํ์ข์ฐ ํ์นธ๋ง ๊ฐ์ผ ์คํ (๊ทธ๋ค์ ํ๋ณด que์ append)
2์ด-> 1,2,3....๋ฐ์ด๋ฌ์ค๊ฐ ์ ํ ๊ทธ๋ค์ ํ๋ณด๋ค ์ํ์ข์ฐ ํ์นธ๋ง ๊ฐ์ผ ์คํ (๊ทธ๋ค๋ค์ ํ๋ณด que์ append)
,
.
.
์ด๋ฐ์ฉ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
bfs()
print(graph[X-1][Y-1])
๋ง์ง๋ง์ผ๋ก ํจ์๋ฅผ ์คํํ๊ณ ์ถ๋ ฅํ๋ฉด ๋ต์ด ์ ์์ ์ผ๋ก ๋์ค๋ ๊ฑธ ํ์ธํ ์ ์์ต๋๋ค.