각 봄버맨의 일에 맞게 폭탄을 설치하고 터뜨리는 역할을 반복하면 된다.
이때 짝수 초에는 모든 맵에 폭탄이 설치된다는 점을 이용하여 조기 종료도 가능하다.
(무조건 모든 맵에 폭탄 설치)
짝수 초에는 폭탄이 설치되고, 홀수 초에는 폭탄이 터진다.
그리고 폭탄을 터뜨리면 그 다음 4칸 안에 있는 폭탄이 터질지 안터질지 알 수 없기 때문에 미리 폭탄 위치를 저장해놓고 한번에 터뜨려야한다.
t는 초기 1초로 설정해두고 grid(격자칸)와 time(폭탄 터지는 시간)을 각각 저장해두어 홀수 초에는 폭탄을 터뜨리고 짝수 초에는 모든 맵에 폭탄을 심도록 하였다.
#백준 16918, 봄버맨
import sys
input = sys.stdin.readline
R, C, N = map(int, input().rstrip().split())
grid = [list(input().rstrip()) for _ in range(R)]
time = [[0]*C for _ in range(R)]
dx = [-1, 1, 0, 0]
dy = [0, 0, 1, -1]
def boomSet():
for i in range(R):
for j in range(C):
if grid[i][j] == '.':
grid[i][j] = 'O'
time[i][j] = t
def boom():
boomList = []
for i in range(R):
for j in range(C):
if grid[i][j] == 'O' and time[i][j] == t-3:
boomList.append((i, j))
for x, y in boomList:
grid[x][y] = '.'
for k in range(4):
nx = x + dx[k]
ny = y + dy[k]
if nx >= R or ny >= C or nx < 0 or ny < 0:
continue
grid[nx][ny] = '.'
t = 1
while t < N:
t += 1
if t % 2 == 0:
boomSet()
else:
boom()
for row in grid:
print(''.join(row))