[2022.02.22 다시 품]
> deepcopy는 시간이 오래 걸리니까
answerArray에다가 모든 값이 '.'인 값을 넣어서
리스트를 새로 만들어줌!
6번이나 틀린 문제다.. 흡
문제를 제대로 이해하지 못해서 생긴 비극적인 일..
지뢰를 밟았을 때를 따로 조건 처리 해줬어야 했는데
새까맣게 까먹고 있던 조건이었다.
지뢰를 밟게 되면?
> 모든 지뢰는 *로 표시를 해야한다.
> 숫자가 적혀있는 부분을 제외한 모든 곳은 .로 변경되어야 한다.
n = int(input())
# 상, 상우,우,우하,하,하좌,좌,좌상
dx = [-1, -1, 0, 1, 1, 1, 0, -1]
dy = [0, 1, 1, 1, 0, -1, -1, -1]
bombArray = [list(input()) for _ in range(n)]
mapArray = [list(input()) for _ in range(n)]
answerArray = [["." for _ in range(n)] for _ in range(n)]
button=False
for i in range(n):
for j in range(n):
if mapArray[i][j] == ".":
continue
if bombArray[i][j] == ".":
temp = 0
for k in range(8):
nx = i + dx[k]
ny = j + dy[k]
if 0 <= nx < n and 0 <= ny < n:
if bombArray[nx][ny] == "*":
temp += 1
answerArray[i][j] = str(temp)
else:
button=True
if button:
for i in range(n):
for j in range(n):
if bombArray[i][j] == "*":
answerArray[i][j] = "*"
print(''.join(answerArray[i]))
else:
for i in range(n):
print(''.join(answerArray[i]))
from copy import deepcopy
n = int(input())
map1 = [list(input()) for _ in range(n)]
map2 = [list(input()) for _ in range(n)]
answer = deepcopy(map2)
# 상,우,좌,하
dx = [-1, -1, 0, 1, 1, 1, 0, -1]
dy = [0, 1, 1, 1, 0, -1, -1, -1]
temp = False
def boom(array1, array2, answer):
global temp
for x in range(n):
for y in range(n):
if map2[x][y] == '.':
continue
if map2[x][y] == 'x':
if map1[x][y] == '.':
cnt = 0
for k in range(8):
nx = x + dx[k]
ny = y + dy[k]
if nx >= 0 and nx < n and ny >= 0 and ny < n:
if map1[nx][ny] == '*':
cnt += 1
answer[x][y] = str(cnt)
else:
temp = True
if temp:
return True
return False
if boom(map1, map2, answer):
for i in range(n):
for j in range(n):
if map1[i][j]=='*':
answer[i][j]='*'
for i in range(n):
print(''.join(answer[i]))
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[n10994] 별 찍기 - 19 (0) | 2021.05.21 |
---|---|
[n1244] 스위치 켜고 끄기 (0) | 2021.05.21 |
[Python] n2578번 | 빙고 (0) | 2021.05.03 |
[Python] n12933번 | 오리 (0) | 2021.05.03 |
[Python] n14467 | 소가 길을 건너간 이유 1 (0) | 2021.04.29 |