KEEP GOING
백준 4396번 : 지뢰 찾기 본문
반응형
https://www.acmicpc.net/problem/4396
1. 코드 개선
# 지뢰찾기
n = int(input())
answerBoard = [list(input()) for _ in range(n)]
checkBoard = [list(input()) for _ in range(n)]
result = []
jiroi = False
# 좌표 설정
dx = [1,0,-1,0,1,-1,1,-1]
dy = [0,1,0,-1,-1,1,1,-1]
for i in range(n):
tmp = []
for j in range(n):
cnt = 0
if checkBoard[i][j] == 'x' and answerBoard[i][j] == '*':
jiroi = True
if checkBoard[i][j] == 'x':
for k in range(8):
# 양수 범위 지정 안하면 range error
if n>(i+dx[k])>=0 and n>(j+dy[k])>=0 and answerBoard[i + dx[k]][j + dy[k]] == '*':
cnt += 1
tmp.append(str(cnt))
else:
tmp.append('.')
result.append(tmp)
if jiroi:
for i in range(n):
for j in range(n):
if answerBoard[i][j] == '*':
result[i][j] = '*'
for data in result:
print(''.join(data))
2. 기존 풀이
# 지뢰찾기
n = int(input())
answerBoard = [list(input()) for _ in range(n)]
checkBoard = [list(input()) for _ in range(n)]
result = []
jiroi = False
dx = [1,0,-1,0,1,-1,1,-1]
dy = [0,1,0,-1,-1,1,1,-1]
for i in range(len(checkBoard)):
x = i
tmp = []
for j in range(n):
y = j
cnt = 0
if checkBoard[i][j] == 'x':
if answerBoard[i][j] == '*':
jiroi = True
for k in range(8):
# 범위 지정 안하면 range error
if n>(x + dx[k])>=0 and n>(y+dy[k])>=0 and answerBoard[x + dx[k]][y + dy[k]] == '*':
# print(answerBoard[x + dx[k]][y + dy[k]])
cnt += 1
tmp.append(str(cnt))
else:
tmp.append('.')
result.append(tmp)
if jiroi:
for i in range(n):
for j in range(n):
if answerBoard[i][j] == '*':
result[i][j] = '*'
for data in result:
print(''.join(data))
반응형
'code review > implementation' 카테고리의 다른 글
[python] 백준 19237번: 어른 상어 (0) | 2022.01.25 |
---|---|
[python] 백준 15686번 : 치킨배달 (combinations, 선형탐색) (0) | 2022.01.11 |
[python] 프로그래머스 60057번 : 문자열 압축 (slicing) (0) | 2022.01.07 |
[python] 음수 피보나치 수열 (구현) (0) | 2021.12.03 |
백준 2839번: A -> B (구현) (0) | 2021.11.21 |
Comments