만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

벽에 벽돌 쌓기

면접 대비

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

요약
빈 칸으로 이루어진 가로 또는 세로 구간 두 개를 겹치지 않게 골라 길이 합의 최댓값을 구합니다.
난이도

보통10점 중 5점

유형
행렬, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

밥은 직사각형 모양의 로프트 스타일 벽을 벽돌로 꾸미고 있다. 벽은 n×mn \times m개의 단위 칸으로 이루어져 있다. 일부 칸에는 이미 벽돌이 있고, 나머지 칸은 비어 있다.

밥은 이 벽에 벽돌을 최대 2개 더 추가하려고 한다. 새 벽돌의 너비는 1 단위이고, 길이는 임의의 양의 정수가 될 수 있다. 각 벽돌은 가로 또는 세로로만 놓을 수 있으므로, 새 벽돌은 한 행 또는 한 열에서 연속된 빈 칸을 차지한다. 두 벽돌은 서로 교차할 수 없으며, 같은 칸을 차지해서도 안 된다.

밥이 이 벽에 추가할 수 있는 새 벽돌 최대 2개의 길이 합의 최댓값은 얼마인가?

입력

첫 줄에 테스트 케이스의 개수 tt (1≤t≤1041 \le t \le 10^4)가 주어진다. 각 테스트 케이스가 이어서 주어진다.

각 테스트 케이스의 첫 줄에는 벽의 높이 nn과 너비 mm이 주어진다 (1≤n,m1 \le n, m; n⋅m≤106n \cdot m \le 10^6).

다음 nn개 줄에는 벽의 상태를 나타내는 mm개의 문자가 주어진다. 벽돌이 있는 칸은 #, 빈 칸은 .로 표시한다.

모든 테스트 케이스에 걸쳐 n⋅mn \cdot m의 합은 10610^6을 넘지 않는다.

출력

각 테스트 케이스마다 새 벽돌 최대 2개의 길이 합의 최댓값을 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    5
    2 2
    ..
    ..
    4 5
    ###.#
    #....
    .##.#
    #.#.#
    2 1
    .
    .
    2 3
    ###
    #.#
    5 4
    ##.#
    ..#.
    #.#.
    ....
    #.##
    
    예상 출력
    4
    6
    2
    1
    7