๐ Problem Solving/Baekjoon
18405๋ฒ: ๊ฒฝ์์ ์ ์ผ
์ฒซ์งธ ์ค์ ์์ฐ์ N, K๊ฐ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. (1 โค N โค 200, 1 โค K โค 1,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ์ ์ํ๊ด์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ์ N๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํด๋น ์์น
www.acmicpc.net


import sys
from collections import deque
input = sys.stdin.readline
n, k = map(int, input().split())
graph = []
for _ in range(n):
graph.append(list(map(int, input().split())))
s, x, y = map(int, input().split())
queue = []
for i in range(n):
for j in range(n):
if graph[i][j] != 0:
queue.append((graph[i][j], i, j, 0))
queue.sort()
queue = deque(queue)
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
while queue:
virus, a, b, time = queue.popleft()
if time == s:
break
for i in range(4):
nx = a + dx[i]
ny = b + dy[i]
if 0 <= nx < n and 0 <= ny < n and graph[nx][ny] == 0:
graph[nx][ny] = virus
queue.append((virus, nx, ny, time + 1))
print(graph[x - 1][y - 1])
ํด์ค
bfs๋ก ํด๊ฒฐํ๋ค. ์ฃผ์ด์ง ์ํ๊ด์ผ๋ก 0์ด ์๋ ๊ฐ์ ์ฐพ์ ํ์ ๋ฃ๊ณ ์ ๋ ฌ์ ์์ผ์ค๋ค.
1๋ฒ ๋ฐ์ด๋ฌ์ค๋ถํฐ ํ์์ ํด์ฃผ๊ณ 1๋ฒ ๋ฐ์ด๋ฌ์ค์ ์ํ์ข์ฐ๊ฐ 0์ด๋ผ๋ฉด 1์ ๋์ ํ๋ค. ์ด๋ฅผ 2, 3๋ฒ ๋ฐ์ด๋ฌ์ค์๋ ๋๊ฐ์ด ์ ์ฉํ ํ, ์๊ฐ์ 1์ด ๋์ด๋๋ค.
s์ ๋์ด๋ ์๊ฐ์ด ๊ฐ์์ก์ ๋, ๋ฐ๋ณต๋ฌธ์ ๋ฉ์ถ๊ณ ๊ตฌํ ์ขํ์ ๊ฐ์ ์ถ๋ ฅํ๋ค.
'๐ Problem Solving > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค-14497] ์ฃผ๋์ ๋(้ฃ) / Python (0) | 2021.07.02 |
---|---|
[๋ฐฑ์ค-5972] ํ๋ฐฐ ๋ฐฐ์ก / Python (0) | 2021.07.02 |
[๋ฐฑ์ค-6118] ์จ๋ฐ๊ผญ์ง / Python (0) | 2021.07.02 |
[๋ฐฑ์ค-1743] ์์๋ฌผ ํผํ๊ธฐ / Python (0) | 2021.07.02 |
[๋ฐฑ์ค-1926] ๊ทธ๋ฆผ / Python (0) | 2021.07.01 |