백준 #4396 지뢰 찾기
문제 링크
문제 설명
지뢰찾기 게임에서 지뢰의 정보가 주어지고 플레이어가 확인한 곳이 주어질 때 최종적으로 판의 상태를 나타내는 문제
코드
import sys
input = sys.stdin.readline
n = int(input())
mines = [[False] * n for _ in range(n)]
arr = []
for i in range(n):
tmp = list(input().rstrip())
arr.append(tmp)
for j in range(n):
if tmp[j] == "*":
mines[i][j] = True
dr = [-1, -1, 0, 1, 1, 1, 0, -1]
dc = [0, 1, 1, 1, 0, -1, -1, -1]
res = [["."] * n for _ in range(n)]
flag = False
for r in range(n):
tmp = list(input().rstrip())
for c in range(n):
if tmp[c] != "x":
continue
if mines[r][c]:
flag = True
res[r][c] = "*"
continue
cnt = 0
for k in range(8):
nr, nc = r + dr[k], c + dc[k]
if nr < 0 or nr >= n or nc < 0 or nc >= n:
continue
if arr[nr][nc] == "*":
cnt += 1
res[r][c] = cnt
if flag:
for i in range(n):
for j in range(n):
if mines[i][j]:
res[i][j] = "*"
for row in res:
for x in row:
print(x, end="")
print()
풀이
지뢰를 따로 배열에 저장해주고 열어본 곳을 확인하면서 주위의 지뢰 개수를 체크해준다. 주의할 사항은 지뢰를 열었을 경우 다른 지뢰들도 다 터진다는 것!
댓글남기기