[BOJ] 16918 봄버맨

시뮬레이션


봄버맨 게임을 턴제로 구현하는 문제

구현 도중 pprint를 이용하면 2차원 배열을 보기 쉽게 볼 수 있어서 편리하다.

부득이하게 시간복잡도는 O(RCN)인데 다른 좋은 방법을 생각해내지 못했다.

import sys
from pprint import pprint

R, C, N = map(int, sys.stdin.readline().rstrip().split())

status = []
for _ in range(R):
    status.append(list(sys.stdin.readline().rstrip()))

# 폭탄 여부를 설치된 시간으로 바꿈
for i in range(R):
    for j in range(C):
        if status[i][j] == '.':
            status[i][j] = 0
        else:
            status[i][j] = 1

for it in range(1, N):
    for i in range(R):
        for j in range(C):
            status[i][j] += 1
    if it % 2 == 0:
        for i in range(R):
            for j in range(C):
                # 만약 3 이상이면 터져야댐
                if status[i][j] >= 3:
                    status[i][j] = 0
                    if i > 0:
                        if status[i-1][j] < 3:
                            status[i-1][j] = 0
                    if j > 0:
                        if status[i][j-1] < 3:
                            status[i][j-1] = 0
                    if i < R-1:
                        if status[i+1][j] < 3:
                            status[i+1][j] = 0
                    if j < C-1:
                        if status[i][j+1] < 3:
                            status[i][j+1] = 0

for i in range(R):
    for j in range(C):
        if status[i][j] == 0:
            status[i][j] = '.'
        else:
            status[i][j] = 'O'

for i in range(R):
    print(''.join(status[i]))

태그:

카테고리:

업데이트: