from collections import deque
def print_graph(graph):
for i in range(len(graph)):
for j in range(len(graph[0])):
print(graph[i][j], end="")
print()
dx = [-1, 0, 0, 1, 0]
dy = [0, -1, 1, 0, 0]
R, C, N = map(int, input().split())
graph = [list(input()) for _ in range(R)]
# 0초 1초(변화 x) 2초 폭탄 설치 3초 폭탄폭파 4초 폭탄 설치 5 폭탄 폭파
current_time = 0
soon_bombs = deque()
while current_time <= N:
if current_time <= 1:
current_time += 1
continue
if current_time % 2 == 0: # 폭탄 설치
for i in range(len(graph)):
for j in range(len(graph[0])):
if graph[i][j] == "O": # 기존 폭탄 등록 (곧 터짐)
soon_bombs.append([i, j])
else: # 새로 설치
graph[i][j] = 'O'
else: # 폭탄 폭파
while soon_bombs:
y, x = soon_bombs.popleft()
for i in range(5):
ny, nx = y + dy[i], x + dx[i]
if 0 <= ny < R and 0 <= nx < C:
graph[ny][nx] = "."
current_time += 1
print_graph(graph)
항상 시간 개념이 나오면 일을 언제해야할지 (초가 지난 후 할지, 지나기 전에 할지) 헷갈리는데, 작은 규모의 예제로 따져보면 그리 어렵지 않다.