지뢰 찾기

시간 제한1초메모리 제한128 MB

요약
n×n 지뢰 배치와 현재 열린 칸 정보가 주어질 때, 열린 안전 칸에는 인접 지뢰 수를, 지뢰를 하나라도 열었다면 모든 지뢰를 별표로 출력하고 나머지는 점으로 출력한다.
난이도

쉬움10점 중 3점

유형
시뮬레이션, 구현, 배열
정답자
아직 제출이 없습니다

문제

지뢰찾기는 n×nn \times n 크기의 격자에서 진행한다. mm개의 지뢰가 서로 다른 칸에 하나씩 숨겨져 있다.

플레이어는 격자의 칸을 하나씩 골라 연다.

  • 지뢰가 있는 칸을 열면 플레이어는 진다.
  • 지뢰가 없는 칸을 열면, 그 칸에는 상하좌우와 대각선으로 인접한 8개의 칸 가운데 지뢰가 놓인 칸의 개수(0 이상 8 이하)가 나타난다.

플레이어가 지뢰가 있는 mm개의 칸만 남기고 나머지 안전한 칸을 모두 열면 이긴다. 남은 mm개의 칸은 반드시 모두 지뢰이다.

당신이 할 일은 일부만 진행된 게임의 정보를 읽어, 그에 해당하는 격자의 현재 상태를 출력하는 것이다.

입력

첫째 줄에 격자의 크기를 나타내는 양의 정수 nn이 주어진다 (1≤n≤101 \le n \le 10).

다음 nn개의 줄에는 지뢰의 배치가 주어진다. 각 줄은 한 행을 나타내는 nn개의 문자로 이루어지며, 온점(.)은 지뢰가 없는 칸, 별표(*)는 지뢰가 있는 칸이다.

이어지는 nn개의 줄에는 각 칸이 열렸는지를 나타내는, 길이가 nn인 문자열이 주어진다. 영소문자 x는 이미 열린 칸, 온점(.)은 아직 열리지 않은 칸이다.

출력

격자의 현재 상태를 nn개의 줄로 출력한다.

  • 지뢰가 없으면서 열린 칸에는 인접한 지뢰의 개수(0 이상 8 이하)를 출력한다.
  • 만약 지뢰가 있는 칸이 하나라도 열렸다면, 지뢰가 있는 모든 칸을 별표(*)로 출력한다.
  • 그 외의 모든 칸은 온점(.)으로 출력한다.

예제2

  1. 예제 1

    입력
    8
    ...**..*
    ......*.
    ....*...
    ........
    ........
    .....*..
    ...**.*.
    .....*..
    xxx.....
    xxxx....
    xxxx....
    xxxxx...
    xxxxx...
    xxxxx...
    xxx.....
    xxxxx...
    
    예상 출력
    001.....
    0013....
    0001....
    00011...
    00001...
    00123...
    001.....
    00123...
    
  2. 예제 2

    입력
    1
    .
    x
    
    예상 출력
    0