Files
Algorithm/백준/Silver/16918. 봄버맨/봄버맨.py

46 lines
1.2 KiB
Python

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))