https://www.acmicpc.net/problem/16918
16918๋ฒ: ๋ด๋ฒ๋งจ
์ฒซ์งธ ์ค์ R, C, N (1 ≤ R, C, N ≤ 200)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ R๊ฐ์ ์ค์ ๊ฒฉ์ํ์ ์ด๊ธฐ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. ๋น ์นธ์ '.'๋ก, ํญํ์ 'O'๋ก ์ฃผ์ด์ง๋ค.
www.acmicpc.net
n=0์ผ ๋: ํญํ ์ค์น
n=1์ผ ๋: ๊ทธ๋๋ก
n=2์ผ ๋~: ๋๋จธ์ง ๋ชจ๋ ์นธ์ ํญํ ์ค์น -> ํญ๋ฐ ๋ฐ๋ณต
r*c ํฌ๊ธฐ์ bombs ๋ฐฐ์ด์ ๋ชจ๋ 0์ผ๋ก ์ด๊ธฐํํ๊ณ ,
์ด๊ธฐ ์ํ ๋ฐฐ์ด์ ์ ๋ ฅ๋ฐ์ผ๋ฉด์ 'O'์ธ ๋ถ๋ถ์ 2๋ก ๋ฐ๊ฟ์ค๋ค. (0์ด - 1์ด ์ํ)
i=2๋ถํฐ n+1๊น์ง for๋ฌธ์ ๋๋ ค์ฃผ๋ฉด์
1. bombs ์ํํ๋ฉด์ ๊ฐ์ ํ๋์ฉ ๊ฐ์์ํค๊ณ ,
2. i๊ฐ ์ง์์ผ ๋์๋ ๋ชจ๋ ์นธ์ ํญํ ์ค์น -> 0์ธ ๋ถ๋ถ์ 3์ผ๋ก ๋ฐ๊ฟ์ค๋ค. (3์ด ํ์ ํญํ์ ํญ๋ฐ์ํฌ ๊ฒ์ด๊ธฐ ๋๋ฌธ)
i๊ฐ ํ์์ผ ๋์๋ ํญํ์ ํญ๋ฐ์ํจ๋ค. -> 0์ธ ๋ถ๋ถ์ ์ํ์ข์ฐ ํ์ํ๋ฉด์ ํญ๋ฐ์ํจ๋ค.
๋ง์ง๋ง์ 0์ธ ๋ถ๋ถ์ '.'์ผ๋ก ๋ฐ๊ฟ์, ์๋ ๋ถ๋ถ์ 'O'๋ก ๋ฐ๊ฟ์ ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
import copy
def explode(x, y, r, c):
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
for i in range(4):
mx = x + dx[i]
my = y + dy[i]
if mx < 0 or mx >= r or my < 0 or my >= c:
continue
temp[mx][my] = 0
r, c, n = map(int, input().split())
bombs = [[0] * c for _ in range(r)]
for i in range(r):
temp = list(input())
for j in range(c):
if temp[j] == 'O':
bombs[i][j] = 2
for i in range(2, n+1):
for x in range(r): # ๊ฐ ํ๋์ฉ ๊ฐ์
for y in range(c):
if bombs[x][y] != 0:
bombs[x][y] -= 1
if i % 2 == 0: # ๋ชจ๋ ์นธ์ ํญํ ์ค์น
for x in range(r):
for y in range(c):
if bombs[x][y] == 0:
bombs[x][y] = 3
else: # 3์ด๊ฐ ์ง๋ ํญํ ํญ๋ฐ
temp = copy.deepcopy(bombs)
for x in range(r):
for y in range(c):
if bombs[x][y] == 0:
explode(x, y, r, c)
bombs = temp[:]
for i in range(r):
for j in range(c):
if bombs[i][j] == 0:
bombs[i][j] = '.'
else:
bombs[i][j] = 'O'
print(bombs[i][j], end='')
print()
'๐ค > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 21921: ๋ธ๋ก๊ทธ (Python) (0) | 2023.06.15 |
---|---|
๋ฐฑ์ค 12933: ์ค๋ฆฌ (Python) (0) | 2023.04.14 |
๋ฐฑ์ค 1766: ๋ฌธ์ ์ง (Python) (0) | 2022.08.05 |
๋ฐฑ์ค 2252: ์ค ์ธ์ฐ๊ธฐ (Python) (0) | 2022.08.05 |
๋ฐฑ์ค 2887: ํ์ฑ ํฐ๋ (Python) (0) | 2022.08.04 |