이번 문제는 간단한 시뮬레이션 문제였다. 매번 격자를 순회하며 폭탄의 위치를 리스트에 담는 함수, 폭발 함수, 폭탄을 만드는 함수를 구현하여 이를 해결하였다. 처음 1초는 가만히 있는다고 했기 때문에 n을 1 감소시켰고, n이 존재하는 동안 반복하는 while문 안에서 폭탄의 위치를 찾고, 폭탄을 만들고, n을 1 감소시킨 후, n이 0보다 클 경우에 폭탄을 담은 리스트를 순회하며 해당 위치에서의 폭발이 일어나도록 구현하였다.
r, c, n=map(int, input().split())
grid=[list(str(input())) for _ in range(r)]
dy, dx=[0, 1, 0, -1], [1, 0, -1, 0]
def find_bomb():
for i in range(r):
for j in range(c):
if grid[i][j]=='O':
bombs.append((i, j))
def explode(y, x):
grid[y][x]='.'
for i in range(4):
ny, nx=y+dy[i], x+dx[i]
if 0<=ny<r and 0<=nx<c:
grid[ny][nx]='.'
def make_bomb():
for i in range(r):
for j in range(c):
if grid[i][j]=='.':
grid[i][j]='O'
n-=1
while n:
bombs=[]
find_bomb()
make_bomb()
n-=1
if n==0:
break
while bombs:
y, x=bombs.pop()
explode(y, x)
n-=1
for i in range(r):
print(''.join(grid[i]))