아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

체스판

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

요약
행이 최대 4개인 체스판에서 각 타일의 모퉁이 칸이 검은 칸에 놓이도록 겹치지 않게 L자 타일을 최대로 배치한다.
난이도

어려움10점 중 8점

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

문제

동혁이는 직사각형 체스판을 가지고 있다. 체스판의 행과 열은 0번부터 센다. ii행 jj열 칸의 색은 i+ji+j가 짝수이면 검정, 홀수이면 흰색이다. 체스판의 일부 칸에는 말이 놓여 있다.

윤호는 L 모양 타일을 아주 많이 가지고 있다. 타일은 체스판의 한 칸과 크기가 같은 정사각형 3개를 아래 그림처럼 이어 붙인 모양이다.

OO
O

윤호는 다음 조건을 모두 지키면서 동혁이의 체스판 위에 타일을 올려놓으려고 한다.

  • 모든 타일은 90도, 180도, 270도로 회전시킬 수 있다.
  • 모든 타일은 체스판 위의 세 칸을 덮어야 한다.
  • 타일끼리 겹치면 안 된다.
  • 말이 놓인 칸은 타일이 덮을 수 없다.
  • 타일의 꼭짓점 칸, 즉 나머지 두 정사각형과 모두 맞닿아 있는 칸은 검정 칸을 덮어야 한다.

윤호가 놓을 수 있는 타일의 최대 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 체스판의 행의 크기 RR과 열의 크기 CC가 주어진다. (1≤R≤41 \le R \le 4, 1≤C≤471 \le C \le 47)

둘째 줄부터 RR개의 줄에 체스판의 상태가 주어진다. 각 줄은 길이가 CC인 문자열이고, 'X'는 말이 놓인 칸, '.'는 빈 칸이다.

출력

윤호가 놓을 수 있는 타일의 최대 개수를 출력한다.

예제4

  1. 예제 1

    입력
    3 3
    X.X
    ...
    X.X
    
    예상 출력
    1
    
  2. 예제 2

    입력
    3 3
    ...
    ...
    ...
    
    예상 출력
    2
    
  3. 예제 3

    입력
    1 19
    ......X.X.XXX.X.XX.
    
    예상 출력
    0
    
  4. 예제 4

    입력
    4 38
    X.....XXX.XX..XXXXXXXXX...X.XX.XX....X
    .XXXX..X..XXXXXXXX....XX.X.X.X.....XXX
    ....XX....X.XX..X.X...XX.X..XXXXXXX..X
    XX.XXXXX.X.X..X..XX.XXX..XX...XXX.X...
    
    예상 출력
    13