백준 4108번: 지뢰찾기 #Python

ColorlessDia·2025년 11월 10일

algorithm/baekjoon

목록 보기
722/807
import sys

def calc_mine_count(graph, r, c, 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 = y + dy[i]
        X = x + dx[i]

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

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

    return count

input = sys.stdin.readline

while True:
    R, C = map(int, input().split())

    if R == C == 0:
        break

    graph = [input().rstrip() for _ in range(R)]
    mine_map = [['*' for _ in range(C)] for _ in range(R)]

    for i in range(R):

        for j in range(C):
            square = graph[i][j]
            
            if square == '*':
                continue

            count = calc_mine_count(graph, R, C, i, j)
            mine_map[i][j] = str(count)
    
    for line in mine_map:
        print(''.join(line))

0개의 댓글