[알고리즘] 백준 - 봄버맨

June·2021년 8월 11일
0

알고리즘

목록 보기
229/260

백준 - 봄버맨

내 풀이

from collections import deque

def print_graph(graph):
    for i in range(len(graph)):
        for j in range(len(graph[0])):
            print(graph[i][j], end="")
        print()
dx = [-1, 0, 0, 1, 0]
dy = [0, -1, 1, 0, 0]

R, C, N = map(int, input().split())
graph = [list(input()) for _ in range(R)]
# 0초 1초(변화 x) 2초 폭탄 설치 3초 폭탄폭파 4초 폭탄 설치 5 폭탄 폭파
current_time = 0
soon_bombs = deque()


while current_time <= N:
    if current_time <= 1:
        current_time += 1
        continue

    if current_time % 2 == 0: # 폭탄 설치
        for i in range(len(graph)):
            for j in range(len(graph[0])):
                if graph[i][j] == "O": # 기존 폭탄 등록 (곧 터짐)
                    soon_bombs.append([i, j])
                else: # 새로 설치
                    graph[i][j] = 'O'

    else: # 폭탄 폭파
        while soon_bombs:
            y, x = soon_bombs.popleft()
            for i in range(5):
                ny, nx = y + dy[i], x + dx[i]
                if 0 <= ny < R and 0 <= nx < C:
                    graph[ny][nx] = "."

    current_time += 1

print_graph(graph)

항상 시간 개념이 나오면 일을 언제해야할지 (초가 지난 후 할지, 지나기 전에 할지) 헷갈리는데, 작은 규모의 예제로 따져보면 그리 어렵지 않다.

0개의 댓글