<๋ฌธ์ ๋งํฌ>
https://www.acmicpc.net/problem/18405
18405๋ฒ: ๊ฒฝ์์ ์ ์ผ
์ฒซ์งธ ์ค์ ์์ฐ์ N, K๊ฐ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ์ ์ํ๊ด์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ์ N๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํด๋น ์์น
www.acmicpc.net
<ํ์ด ์ ๋ต>
1. ํ ๋งํ ๋ ๋น์ทํ๊ฒ ์ฒ์์ ๋ฐ์ด๋ฌ์ค์ ์ขํ๋ฅผ ํ์ ์ ์ฅํด๋๊ณ bfs๋ฅผ ๋๋ฆฌ๋ฉด๋๋ค.
2. ๋จ ์ด ๋ฌธ์ ์์๋ ๋ฎ์ ๋ฒํธ์ ๋ฐ์ด๋ฌ์ค๋ถํฐ ์ ์ผ๋๋ค๋ ํน์ฑ์ด ์์ผ๋ฏ๋ก bfs ๋๋ฆฌ๊ธฐ ์ง์ ์ ํ๋ฅผ ํ๋ฒ ์ ๋ ฌํด์ค์ผ ํ๋ค.
<์ ๋ต ์ฝ๋>
from collections import deque
import sys, os, io, atexit
input = lambda: sys.stdin.readline().rstrip('\r\n')
stdout = io.BytesIO()
sys.stdout.write = lambda s: stdout.write(s.encode("ascii"))
atexit.register(lambda: os.write(1, stdout.getvalue()))
# 220921 18405 ๊ฒฝ์์ ๊ฐ์ผ
# ์ ๋ต์ฝ๋
# N: ๋ฐฐ์ด์ ํฌ๊ธฐ, K: ๋ฐ์ด๋ฌ์ค ๊ฐ์
N, K = map(int, input().split())
# arr: ๋ฐฐ์ด
arr = [list(map(int, input().split())) for _ in range(N)]
# S: ์๊ฐ, X, Y: ๋ชฉํ ์ขํ
S, X, Y = map(int, input().split())
# virus: ๋ฐ์ด๋ฌ์ค์ ์ขํ๋ฅผ ๋ด์ ๋ฆฌ์คํธ
virus = []
# ๋ฐ์ด๋ฌ์ค์ ์ขํ, ๋ฐ์ด๋ฌ์ค ์ข
๋ฅ, ํ์ ์๊ฐ ์ด๊น๊ฐ์ ๋ฃ์ด์ค๋ค.
for r in range(N):
for c in range(N):
if arr[r][c]:
virus.append((r, c, arr[r][c], 0))
# ๋ฐ์ด๋ฌ์ค ์ข
๋ฅ์ ๋ฐ๋ผ ์ ๋ ฌ
virus = deque(sorted(virus, key=lambda x: x[2]))
# ๋ธํ ํ์ ํ์ ๋ฐฉํฅ
dr = [-1, 1, 0, 0]
dc = [0, 0, -1, 1]
# bfs ํจ์ ์ ์ธ
def bfs(virus=deque):
while virus:
r, c, virus_type, time = virus.popleft()
# S์๊ฐ๋งํผ ํ์์ ๋ค ๋ง์ณค์ ๊ฒฝ์ฐ
if time == S:
# ๋ชฉํ ์ขํ์ ๋ฐ์ด๋ฌ์ค ์ข
๋ฅ ์ถ๋ ฅ
print(arr[X - 1][Y - 1])
return
for i in range(4):
nr = r + dr[i]
nc = c + dc[i]
# ํด๋น ์์ญ์ด ๋น ๊ณต๊ฐ์ผ ๋ ๋ฐ์ด๋ฌ์ค ์ข
๋ฅ๋ก ๊ฐฑ์ ํด์ฃผ๋ฉด์ ํ์
if 0 <= nr < N and 0 <= nc < N:
if arr[nr][nc] == 0:
arr[nr][nc] = virus_type
virus.append((nr, nc, virus_type, time + 1))
print(arr[X - 1][Y - 1])
return
# bfs ํ์ ์ค์
bfs(virus)
'โญ Problem_Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 16236 ์๊ธฐ์์ด (Python/ํ์ด์ฌ) (0) | 2022.10.13 |
---|---|
[๋ฐฑ์ค] 12100 2048 (Easy) (Python/ํ์ด์ฌ) (1) | 2022.10.11 |
[๋ฐฑ์ค] 17142 ์ฐ๊ตฌ์ 3 (Python/ํ์ด์ฌ) (1) | 2022.10.07 |
[๋ฐฑ์ค] 1766 ๋ฌธ์ ์ง (Python/ํ์ด์ฌ) (0) | 2022.10.06 |
[๋ฐฑ์ค] 1662 ์์ถ (Python/ํ์ด์ฌ) (1) | 2022.10.05 |
๋๊ธ