https://www.acmicpc.net/problem/4396
4396번: 지뢰 찾기
첫 번째 줄에는 10보다 작거나 같은 양의 정수 n이 입력된다. 다음 n개의 줄은 지뢰의 위치를 나타낸다. 각각의 줄은 n개의 문자를 사용하여 한 행을 나타낸다. 온점(.)은 지뢰가 없는 지점이며 별
www.acmicpc.net
문제를 보고 반복문으로 지뢰를 탐색하면 되겠지라고 생각했는데,
문제를 잘 읽어보니 폭탄을 열었을 때 조건을 추가해주지 않아서 틀렸었다.
폭탄이 터졌을 때는 한 번만 필요하므로, flag 변수를 세워서 한 번만 실행되도록 했다.
import sys
input = sys.stdin.readline
n = int(input())
dx = [1,1,1,0,0,-1,-1,-1]
dy = [1,0,-1,1,-1,1,0,-1]
real = [list(input().rstrip()) for _ in range(n)]
check = [list(input().rstrip()) for _ in range(n)]
flag = True
def change(x,y):
cnt = 0
for i in range(8):
a = x + dx[i]
b = y + dy[i]
if 0<=a <n and 0<=b<n:
if real[a][b] == '*':
cnt += 1
return str(cnt)
#지뢰가 있는 칸을 열었을 때
def bomb():
for i in range(n):
for j in range(n):
if real[i][j] == "*":
check[i][j] = "*"
for i in range(n):
for j in range(n):
if check[i][j] == 'x':
if real[i][j] == ".":
check[i][j] = change(i,j)
elif real[i][j] == "*" and flag:
bomb()
flag==False
for i in check:
print("".join(i))
'알고리즘 공부 > 구현' 카테고리의 다른 글
[백준/구현] 10797번: 10부제 (0) | 2022.10.02 |
---|---|
[백준/구현] 1292번 쉽게 푸는 문제 (0) | 2022.09.04 |
[백준/새싹 문제] 🌱🌱 (0) | 2022.08.07 |
[백준/구현] 1680번 쓰레기 수거 (0) | 2022.05.04 |
[백준/구현] 1730번 판화 (0) | 2022.04.13 |