티스토리 뷰

[Silver I] 봄버맨 - 16918

문제 링크

성능 요약

메모리: 245288 KB, 시간: 2224 ms

분류

그래프 이론(graphs), 그래프 탐색(graph_traversal), 구현(implementation), 시뮬레이션(simulation)

from collections import deque

dx, dy = [-1, 1, 0, 0, 0], [0, 0, -1, 1, 0]
q = deque()

def time_set(time):
    global visited, graph
    for index, line in enumerate(graph):
        for index2, line_o in enumerate(line):
            if line_o == 'O' and visited[index][index2] == -10:
                # 초기에 설치된 폭탄
                visited[index][index2] = time

def fill_graph(time):
    global visited, graph
    for index, line in enumerate(graph):
        for index2, line_o in enumerate(line):
            if line_o == '.' and visited[index][index2] == -10:
                # 폭탄 새로 세팅
                visited[index][index2] = time
                graph[index][index2] = 'O'

def boom(time):
    boom_lst = []
    for i in range(r):
        for j in range(c):
            # 폭탄이 존재.. 하고 시간이 설치 시간 + 3 과 동일하다면
            if graph[i][j] == 'O' and time == visited[i][j] + 3:
                # 현재 위치기준으로 좌우상하 탐색
                for k in range(5):
                    nx, ny = i + dx[k], j + dy[k]
                    
                    if 0 <= i + dx[k] < r and 0 <= j + dy[k] < c:
                        boom_lst.append([nx, ny])
    for x, y in boom_lst:
        graph[x][y], visited[x][y] = '.', -10



# r : 가로 줄 , c : 세로 줄 , n : n 초 후 격자판의 상태 출력
r, c, n = map(int, input().split())

graph = [list(map(str, input())) for _ in range(r)]

visited = [[-10] * c for _ in range(r)]

for i in range(n + 1):
    if i == 0:
        # 초기 폭탄 카운트 세팅
        time_set(0)
    elif i == 1:
        
        pass
    elif i % 2 == 0:
        # 폭탄 새로 채우기
        fill_graph(i)
        # 타이머 설정
        time_set(i)
    elif i % 2 != 0:
        # 폭탄을 터뜨립니다.
        boom(i)
for index, line in enumerate(graph):
    for index2, line_o in enumerate(line):
        print(line_o, end='')
    print()

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함