[๋ฐฑ์ค] 16918 ๋ด๋ฒ๋งจ (python ํ์ด์ฌ)
16918๋ฒ: ๋ด๋ฒ๋งจ
์ฒซ์งธ ์ค์ R, C, N (1 ≤ R, C, N ≤ 200)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ R๊ฐ์ ์ค์ ๊ฒฉ์ํ์ ์ด๊ธฐ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. ๋น ์นธ์ '.'๋ก, ํญํ์ 'O'๋ก ์ฃผ์ด์ง๋ค.
www.acmicpc.net
BFS๋๋์ ๊ตฌํ ๋ฌธ์
์์ด๋์ด
ํญํ์ ์ถ๊ฐํ๊ณ ํฐํธ๋ฆฌ๋ ๊ณผ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๋ฉด ํธํ ๊ฑฐ ๊ฐ์ deque๋ฅผ ์ฌ์ฉํ๋ค.
1์ด๋ง๋ค ์ด๋ป๊ฒ ๊ฒฉ์ํ์ ๋ณํ๋์ง ์๊ฐํ๋ฉฐ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์ ์ฒด ์ฝ๋
from collections import deque
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
grid = [] # ๊ฒฉ์ํ
boomList = deque() # ํญํ ์ขํ ๋ฆฌ์คํธ
R, C, N = map(int, input().split())
for i in range(R): # ๊ฒฉ์ํ ์ ๋ณด ์
๋ ฅ
row = list(input())
for j in range(C):
if row[j] == 'O': # ์ฒ์ ํญํ ์ขํ๋ค ์ ์ฅ
boomList.append([i, j])
grid.append(row)
t = 1 # ์ฒ์ 1์ด๊ฐ ์ง๋ ํ์ ๊ฒฉ์ํ์ ์๋ฌด ์ผ๋ ๋ฒ์ด์ง์ง ์๊ธฐ ๋๋ฌธ์, ์ด๊ธฐ ์๊ฐ์ 1๋ก ์ก์๋ ๋๋ค.
while t < N:
for i in range(R): # ํญํ ์ฑ์๋ฃ๊ธฐ
for j in range(C):
if grid[i][j] == '.':
grid[i][j] = 'O'
t += 1
if t == N:
break
while boomList: # ํญํ ํฐํธ๋ฆฌ๊ธฐ
x, y = boomList.popleft()
grid[x][y] = '.'
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < R and 0 <= ny < C:
grid[nx][ny] = '.'
for i in range(R): # ํญํ ํฐ์ง๊ณ ๋จ์ ํญํ๋ค ์ ์ฅ
for j in range(C):
if grid[i][j] == 'O':
boomList.append([i, j])
t += 1
for g in grid:
print(''.join(g))
์ฝ๋ ์ค๋ช
for i in range(R):
row = list(input())
for j in range(C):
if row[j] == 'O': # ์ฒ์ ํญํ ์ขํ๋ค ์ ์ฅ
boomList.append([i, j])
grid.append(row)
๊ฐ์ฅ ์ฒ์์ ์๋ ํญํ๋ค์ ์ขํ๋ฅผ boomList์ ์ ์ฅํด๋๋ค.
while t < N:
for i in range(R): # ํญํ ์ฑ์๋ฃ๊ธฐ
for j in range(C):
if grid[i][j] == '.':
grid[i][j] = 'O'
t += 1
if t == N:
break
while boomList: # ํญํ ํฐํธ๋ฆฌ๊ธฐ
x, y = boomList.popleft()
grid[x][y] = '.'
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < R and 0 <= ny < C:
grid[nx][ny] = '.'
for i in range(R): # ํญํ ํฐ์ง๊ณ ๋จ์ ํญํ๋ค ์ ์ฅ
for j in range(C):
if grid[i][j] == 'O':
boomList.append([i, j])
t += 1
์๊ฐ์ด N์ด๊ฐ ๋ ๋๊น์ง ๋ฌธ์ ์์ ์ ์ํ ๊ณผ์ ์ ๋ฐ๋ณตํด ์ค๋ค.
1. ๋น๊ณณ์ ํญํ์ ์ฑ์์ค๋ค.
2. 1์ด ๊ฒฝ๊ณผ, ์๊ฐ์ด N์ด๊ฐ ๋๋ฉด break
3. boomList์ ์๋ ํญํ๋ค๋ง ํฐํธ๋ ค์ค๋ค.
4. ํญํ์ด ํฐ์ง๊ณ , ๋จ์์๋ ํญํ๋ค๋ง boomList์ ์ถ๊ฐํด ์ค๋ค.
5. 1์ด ๊ฒฝ๊ณผ.