지뢰찾기

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

요약
테두리 셀만 숫자로 공개된 지뢰찾기 보드에서 테두리 힌트와 모순되지 않게 내부의 닫힌 칸에 배치할 수 있는 지뢰의 최대 개수를 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 조합론, 비트 연산
정답자
아직 제출이 없습니다

문제

N×N 크기의 지뢰찾기 보드가 있다. 보드 곳곳에는 지뢰가 숨겨져 있고, 지뢰가 없는 열린 칸에는 그 칸과 인접한 8방향 칸들 중 지뢰가 몇 개 있는지가 숫자로 적혀 있다.

이 문제에서는 보드의 테두리 칸이 모두 열려 있고, 테두리를 제외한 칸은 모두 닫힌 상태에서 시작한다. 닫힌 칸은 #으로 표시된다. 다음 보드를 보자.

11100
2###1
3###1
2###1
12210

이 보드에서는 닫힌 칸들 중 최대 6칸에 지뢰가 있을 수 있으며, 한 가지 배치는 다음과 같다.

11100
2*1
3***1
2**1
12210

보드가 주어졌을 때, 닫힌 칸들 중 지뢰가 있을 수 있는 칸의 최대 개수를 구하시오.

입력

첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.

다음 N개의 줄에는 보드를 나타내는 길이 N의 문자열이 하나씩 주어진다. 테두리 칸은 숫자이며, 테두리를 제외한 닫힌 칸은 #으로 주어진다.

출력

닫힌 칸들 중 지뢰가 있을 수 있는 칸의 최대 개수를 출력한다.

예제1

  1. 예제 1

    입력
    5
    11100
    2###1
    3###1
    2###1
    12210
    
    예상 출력
    6