영과일 학회방

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

요약
'X' 기둥을 피하며 격자의 '.' 칸을 1x1과 1x2 타일로 덮을 때 필요한 타일 개수의 최솟값을 구합니다.
난이도

어려움10점 중 9점

유형
그래프, DFS, 유니온 파인드, 조합론
정답자
아직 제출이 없습니다

문제

영과일은 학회방이 없어질 위기에 처했지만, 우수한 학회원들의 실력을 인정받아 학회방을 다시 배정받았다. 기뻐진 영과일 총무부장 재현이는 새 마음으로 1×21 \times 2 타일과 1×11 \times 1 타일을 사서 학회방 바닥을 모두 덮으려고 한다.

알뜰한 재현이를 위해 학회방 도면이 주어졌을 때, 학회방 바닥을 모두 덮는 데 필요한 타일의 최소 개수를 출력하는 프로그램을 작성하시오.

입력

첫 번째 줄에 학회방 도면의 행 수 NN과 열 수 MM이 주어진다. (1≤N≤501 \le N \le 50, 1≤M≤501 \le M \le 50)

두 번째 줄부터 NN개의 줄에 학회방 도면을 나타내는 길이 MM의 문자열이 주어진다. i+1i+1번째 줄의 jj번째 문자가 .이면 바닥, X이면 기둥이다.

출력

첫 번째 줄에 필요한 타일의 최소 개수를 출력한다.

예제1

  1. 예제 1

    입력
    3 4
    .X..
    ...X
    ...X
    
    예상 출력
    5