ㅠㅠ 많이 틀리다가 맞았다...
풀이
1초) 처음 설치된 것과 같음
2초) 모든 칸에 폭탄 설치됨.
3초) 처음에 설치되었던 폭탄이 폭발함.
4초) 모든 칸에 폭탄이 설치됨.
5초) 2초 대에 설치되었던 폭탄들 중 남은 폭탄들이 폭발함.
6초) 모든 칸에 폭탄이 설치됨.
7초) 4초 대에 설치되었던 폭탄들 중 남은 폭탄들이 폭발함.
예제의 그림을 보면 이해할 수 있을 것이다!
이렇게 해서 짝수 초일 때는 무조건 모든 칸에 폭탄이 설치되어있다는 걸 알 수 있다.
또 홀수 초의 경우에도 4초 주기로 돌아가는 걸 볼 수 있다. 그래서 %4를 이용해서 경우를 구해서 풀었다.
N==1일 때 경우는 따로 빼둬야 한다. 그건 이 게시물을 보고 알았다..
틀렸던 부분....
진짜 모르겠어서, 친구한테 물어봤고, 친구가 알려줬다...
N==1일 때 부분 때문에 틀렸던 것이었다.
if N == 1: # 그대로 출력
for i in range(R):
print(*board[i])
이렇게 *board[i]
을 하니까, 중간 중간에 공백이 출력되었다.
그 부분을 바꿔주니 맞았다..
코드 👩💻
import sys
input = sys.stdin.readline
R, C, N = map(int, input().split())
board = list(list(input().rstrip()) for _ in range(R))
dist = [(0, -1), (0, 1), (1, 0), (-1, 0)]
if N == 1: # 그대로 출력
for i in range(R):
for j in range(C):
print(board[i][j], end='')
print()
# 전체 폭탄 있을 때
elif N % 2 == 0:
for i in range(R):
for j in range(C):
print('O', end='')
print()
elif N % 4 == 3:
# 초기 폭탄 폭발할 때 결과
tmp_board = [['O'] * C for _ in range(R)]
for i in range(R):
for j in range(C):
if board[i][j] == 'O':
tmp_board[i][j] = '.'
# 4방향에 폭탄 있으면 터지기
for k in range(4):
ni = i + dist[k][0]
nj = j + dist[k][1]
if 0 <= ni < R and 0 <= nj < C:
tmp_board[ni][nj] = '.'
for i in range(R):
for j in range(C):
print(tmp_board[i][j], end='')
print()
elif N % 4 == 1: # 나중에 설치된 폭탄 폭발
# # 한 번 더 진행된 결과
tmp_board = [['O'] * C for _ in range(R)]
for i in range(R):
for j in range(C):
if board[i][j] == 'O':
tmp_board[i][j] = '.'
# 4방향에 폭탄 있으면 터지기
for k in range(4):
ni = i + dist[k][0]
nj = j + dist[k][1]
if 0 <= ni < R and 0 <= nj < C:
tmp_board[ni][nj] = '.'
board = tmp_board
tmp_board = [['O'] * C for _ in range(R)]
for i in range(R):
for j in range(C):
if board[i][j] == 'O':
tmp_board[i][j] = '.'
# 4방향에 폭탄 있으면 터지기
for k in range(4):
ni = i + dist[k][0]
nj = j + dist[k][1]
if 0 <= ni < R and 0 <= nj < C:
tmp_board[ni][nj] = '.'
for i in range(R):
for j in range(C):
print(tmp_board[i][j], end='')
print()
728x90
'즐거운 PS 👩💻🥰' 카테고리의 다른 글
[백준-파이썬] 2239: 스도쿠, 2580: 스도쿠 (0) | 2022.03.10 |
---|---|
[백준-파이썬] 1956: 운동 (0) | 2022.03.09 |
[백준-파이썬] 🥈실버🥈 분할 정복 문제들 (0) | 2022.03.06 |
[백준-파이썬] 13422: 도둑 (0) | 2022.03.05 |
[백준-파이썬] 2109: 순회강연 (0) | 2022.02.27 |