문제
초기 풀이에서는 시간에 따라 폭탄의 움직임을 모두 구하고 2차원 배열에 저장하는 방식으로 진행하였지만, 결국 시간 초과로 문제를 해결하지 못했습니다. 그 후 시간에 따른 폭탄의 패턴을 발견하였고, 시간을 따로 계산해 해당 패턴에 대한 2차원 배열을 출력하도록 했습니다.
위와 같은 4가지 조건을 만족하도록 코드를 작성하여 문제를 해결했습니다.
'''
폭탄 폭발시 인접한 4칸 동시 폭발
'''
R, C, N = map(int, input().split())
arr = [list(input()) for _ in range(R)]
all = [['O'] * C for _ in range(R)]
if N <= 1: # 1
for lst in arr:
lst = ''.join(lst)
print(lst)
elif N % 2 == 0: # 2, 4, 6, 8
for lst in all:
lst = ''.join(lst)
print(lst)
else:
bomb1 = [lst[:] for lst in all]
for i in range(R):
for j in range(C):
if arr[i][j] == 'O':
bomb1[i][j] = '.'
for di, dj in ((1, 0), (0, 1), (-1, 0), (0, -1)):
ni, nj = i + di, j + dj
if 0 <= ni < R and 0 <= nj < C:
bomb1[ni][nj] = '.'
bomb2 = [lst[:] for lst in all]
for i in range(R):
for j in range(C):
if bomb1[i][j] == 'O':
bomb2[i][j] = '.'
for di, dj in ((1, 0), (0, 1), (-1, 0), (0, -1)):
ni, nj = i + di, j + dj
if 0 <= ni < R and 0 <= nj < C:
bomb2[ni][nj] = '.'
if N % 4 == 1: # 5, 9, 13
for lst in bomb2:
lst = ''.join(lst)
print(lst)
else: # 3, 7, 11, 15
for lst in bomb1:
lst = ''.join(lst)
print(lst)
피드백 및 개선점은 댓글을 통해 알려주세요😊