:link:문제 링크

[4396 지뢰 찾기]

:question:문제 설명

지뢰찾기 게임에서 지뢰의 정보가 주어지고 플레이어가 확인한 곳이 주어질 때 최종적으로 판의 상태를 나타내는 문제

:pencil2:코드

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()

:memo:풀이

지뢰를 따로 배열에 저장해주고 열어본 곳을 확인하면서 주위의 지뢰 개수를 체크해준다. 주의할 사항은 지뢰를 열었을 경우 다른 지뢰들도 다 터진다는 것!

댓글남기기