누리카베

면접 대비

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

요약
번호가 적힌 섬마다 크기가 숫자와 같은지, 물칸이 하나로 연결되는지, 2x2 구역에 물칸만 있지 않은지 확인합니다.
난이도

보통10점 중 4점

유형
BFS, 행렬, 구현
정답자
아직 제출이 없습니다

문제

숫자가 적힌 9행 10열 누리카베 퍼즐 격자

누리카베는 일본에서 만들어진 펜슬 퍼즐이다. 직사각형 격자가 주어지고, 각 칸은 섬 칸(흰색)이거나 물 칸(검은색)이다. 섬 칸 중 일부에는 1 이상 9 이하의 숫자가 적혀 있다. 다음 세 조건을 모두 만족하는 판을 올바르게 채운 판이라고 한다.

  • 두 칸이 변을 맞대고 있으면 두 칸은 인접하다. 인접한 섬 칸을 따라 서로 이어지는 섬 칸의 모임을 하나의 섬이라고 한다. 모든 섬에는 숫자가 적힌 칸이 정확히 하나 있고, 그 섬에 속한 칸의 개수는 그 숫자와 같다.
  • 모든 물 칸은 같은 인접 규칙으로 하나로 이어져 있다.
  • 네 칸이 모두 물인 2×2 블록은 없다. 즉 격자의 모든 2×2 블록에는 섬 칸이 적어도 하나 있다.

채워진 판이 올바른지 판정하라.

적용할 대상이 없는 조건은 만족한 것으로 본다. 물 칸이 하나도 없는 판은 두 번째 조건을 만족하고, 행이 하나이거나 열이 하나인 판에는 2×2 블록이 없다.

입력

첫 줄에 판의 개수 TT가 주어진다.

각 판의 첫 줄에는 행의 수 NN과 열의 수 MM이 공백으로 구분되어 주어진다. 이어지는 NN개의 줄에 판의 각 행이 한 줄씩 주어진다. 각 행은 123456789.#에 속하는 문자 MM개로 이루어진 문자열이다. #는 물 칸, 숫자는 숫자가 적힌 섬 칸, .은 숫자가 적히지 않은 섬 칸이다.

  • 0<T≤1000 < T \le 100
  • 1≤N,M≤501 \le N, M \le 50

출력

각 판마다 올바르게 채운 판이면 YES, 아니면 NO를 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    2
    9 10
    2.#...##.2
    ###..#2###
    #2#.7#.#.#
    #.######.#
    ##.#..3#3#
    .#2####3##
    2##4.#..#.
    ##..#####.
    #1###.2#4.
    2 2
    #1
    1#
    
    예상 출력
    YES
    NO
    
  2. 예제 2

    입력
    6
    1 1
    1
    1 1
    .
    1 1
    2
    1 1
    #
    1 3
    ###
    3 1
    #
    #
    #
    
    예상 출력
    YES
    NO
    NO
    YES
    YES
    YES
    
  3. 예제 3

    입력
    5
    2 2
    ##
    ##
    2 2
    1#
    ##
    2 2
    4.
    ..
    2 2
    1.
    ..
    2 2
    12
    ..
    
    예상 출력
    NO
    YES
    YES
    NO
    NO
    
  4. 예제 4

    입력
    4
    1 3
    12#
    1 3
    #.#
    1 5
    2.#.2
    1 5
    3..#1
    
    예상 출력
    NO
    NO
    YES
    YES