백준 4396번: 지뢰 찾기 #Python

ColorlessDia·2025년 11월 18일

algorithm/baekjoon

목록 보기
730/807
import sys

def find_mine(mine_graph, y, x):
    dy = [1, 1, 1, 0, -1, -1, -1, 0]
    dx = [-1, 0, 1, 1, 1, 0, -1, -1]

    count = 0

    for i in range(8):
        Y, X = y + dy[i], x + dx[i]

        if not ((0 <= Y < N) and (0 <= X < N)):
            continue

        if mine_graph[Y][X] == '*':
            count += 1
    
    return count

input = sys.stdin.readline

N = int(input())

graph = [['.' for _ in range(N)] for _ in range(N)]
mine_graph = [input().rstrip() for _ in range(N)]
square_graph = [input().rstrip() for _ in range(N)]

mine_list = []
is_find = False

for i in range(N):

    for j in range(N):
        mine = mine_graph[i][j]
        square = square_graph[i][j]

        if mine == '*':
            mine_list.append((i, j))

            if square == 'x' and (not is_find):
                is_find = True

        if square == 'x':
            count = find_mine(mine_graph, i, j)
            graph[i][j] = str(count)

if is_find:

    for y, x in mine_list:
        graph[y][x] = '*'

for line in graph:
    print(''.join(line))

0개의 댓글