첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다.
총 R개의 줄에 N초가 지난 후의 격자판 상태를 출력한다.
- 탄 위치 찾아 bombs deque에 저장하는 함수 정의
- 모든 자리에 폭탄을 설치하는 함수 정의
- bombs deque에 들어있는 좌표로 폭탄을 터트리는 함수 정의. bombs.popleft하여 좌표값 받고, 상 우 하 좌 에 있는 좌표로 폭탄을 터뜨린다.
- 3 : 폭탄이 설치되어 있지 않은 모든 칸에 폭탄을 설치한다 → make_bombs()
- 4 : 1초가 지난 후에 3초 전에 설치된 폭탄이 모두 폭발한다 → explode()
import sys
sys.stdin = open("input.txt", "rt")
# 16918, 봄버맨
import sys
from collections import deque
def loc_bombs(): # 폭탄 위치 찾아 bombs deque에 저장
for i in range(R):
for j in range(C):
if board[i][j] == 'O':
bombs.append((i, j))
def make_bombs(): # 모든 자리에 폭탄 설치
for i in range(R):
for j in range(C):
if board[i][j] == '.':
board[i][j] = 'O'
def explode(): # bombs deque에 들어있는 좌표로 폭탄 터트림
while bombs:
r, c = bombs.popleft()
board[r][c] = '.'
if 0 <= r - 1:
board[r - 1][c] = '.'
if r + 1 < R:
board[r + 1][c] = '.'
if 0 <= c - 1:
board[r][c - 1] = '.'
if c + 1 < C:
board[r][c + 1] = '.'
R, C, N = map(int, sys.stdin.readline().split())
board = [list(sys.stdin.readline().rstrip()) for _ in range(R)]
N -= 1 # 1초 동안 아무것도 하지 않는다
while N:
bombs = deque()
loc_bombs()
make_bombs()
N -= 1
if N == 0:
break
explode()
N -= 1
for i in range(len(board)):
for j in range(len(board[0])):
print(board[i][j], end='')
print()