8자 새기기
시간 제한1초메모리 제한128 MB
한 줄을 공유하는 두 축 정렬 사각형의 테두리를 모두 흠 없는 칸으로 그을 때, 두 내부 넓이의 곱의 최댓값을 구한다.
문제
농부 존의 소들이 커다란 정사각형 대리석 판을 받았는데, 아쉽게도 군데군데 흠집이 있습니다. 이 판은 격자()로 나타내며, *는 흠집이 있는 칸을, .는 흠집이 없는 매끈한 칸을 뜻합니다.
소들은 숫자 8을 좋아해서(네 발마다 갈라진 발굽이 있어 "발가락"으로 8까지 셀 수 있습니다) 대리석에 숫자 8을 새기고 싶어 합니다. 숫자 8은 축에 나란한 두 직사각형의 테두리로 그리며, 위쪽 직사각형과 아래쪽 직사각형은 다음 조건을 모두 만족해야 합니다.
- 두 직사각형은 각각 내부에 적어도 한 칸을 품어야 합니다.
- 두 직사각형은 하나의 가로선을 공유합니다. 즉 위쪽 직사각형의 아래 변이 아래쪽 직사각형의 위 변 위에 놓이며, 그 위 변의 (같아도 되는) 부분 구간이어야 합니다. 다시 말해 두 변은 같은 행에 있고, 위쪽 직사각형의 좌우 열이 아래쪽 직사각형의 좌우 열 사이(양 끝 포함)에 들어와야 합니다.
- 두 직사각형의 테두리(네 변 전체)에 해당하는 모든 칸은 흠집이 없어야(
.) 합니다. 내부 칸에는 제한이 없어 흠집이 있어도 됩니다.
행 , 열 에 걸친 직사각형이 품는 내부 넓이는 입니다. 숫자 8의 미적 점수는 두 직사각형이 품는 내부 넓이의 곱이며, 소들은 이 값을 최대로 만들고 싶어 합니다.
숫자 8의 예시 모양(8은 새겨진 테두리 칸):
.8888...
.8..8...
88888888
8......8
88888888
새길 수 있는 숫자 8의 미적 점수 중 최댓값을 구하세요. 유효한 숫자 8을 하나도 새길 수 없다면 -1을 출력합니다.
입력
- 첫째 줄: 대리석 판의 한 변 길이인 정수 .
- 둘째 줄부터 째 줄까지: 각 줄은
*(흠집) 또는.(매끈한 칸)로 이루어진 개의 문자로 대리석의 한 행을 나타냅니다.
출력
- 테두리에 흠집 칸을 전혀 쓰지 않는 숫자 8의 미적 점수 중 최댓값을 한 줄에 출력합니다. 숫자 8을 만들 수 없다면
-1을 출력합니다.