체스판 2
시간 제한2초메모리 제한512 MB
막힌 칸이 있는 격자에 L자 타일을 겹치지 않게 최대한 많이 놓되, 각 타일의 모서리 칸은 검은 칸에 두어야 한다.
문제
동혁이는 직사각형 체스판을 가지고 있다. 체스판의 행과 열은 0번부터 센다. 행 열 칸의 색은 가 짝수이면 검은색, 홀수이면 흰색이다. 체스판의 일부 칸에는 말이 놓여 있다.
윤호는 L 모양 타일을 아주 많이 가지고 있다. 타일은 체스판의 한 칸과 크기가 같은 정사각형 3개를 아래 그림처럼 이어 붙인 모양이다.
OO
O
윤호는 다음 조건을 지키면서 체스판 위에 타일을 올려놓으려고 한다.
- 타일은 90도, 180도, 270도로 회전시킬 수 있다.
- 타일 하나는 체스판의 세 칸을 덮어야 한다.
- 타일끼리 겹치면 안 된다.
- 말이 놓인 칸은 타일이 덮을 수 없다.
- 타일의 꼭짓점 칸, 즉 나머지 정사각형 2개와 모두 맞닿은 칸은 검은 칸을 덮어야 한다.
윤호가 놓을 수 있는 타일의 최대 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 체스판의 행 개수 와 열 개수 가 주어진다. (, )
둘째 줄부터 개 줄에 체스판의 상태가 주어진다. 각 줄은 길이가 인 문자열이고, 'X'는 말이 놓인 칸, '.'는 빈 칸을 뜻한다.
출력
윤호가 놓을 수 있는 타일의 최대 개수를 출력한다.