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

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

금박

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

요약
금박과 빈 종이 픽셀 분포를 설명하는 단 한 번의 가로, 세로, 대각선 접힘선을 찾습니다.
난이도

보통10점 중 6점

유형
완전 탐색, 시뮬레이션, 행렬
정답자
아직 제출이 없습니다

문제

금박은 종이에 붙인 아주 얇은 금 막이다. 종이를 접었다가 펴면 금박은 종이보다 금박끼리 더 잘 달라붙어서, 금이 남은 부분과 종이가 드러난 부분이 생긴다. 금박은 언제나 접힌 선의 한쪽에만 남고 양쪽에 나뉘어 남지 않는다.

아래 그림에서 종이는 점선을 따라 접혀 있다.

금박 한 장을 거칠게 찍은 디지털 사진이 주어진다. 한 픽셀이 덮는 영역이 대부분 금이면 #, 대부분 드러난 종이면 .으로 적는다. 종이가 어디에서 접혔는지 구하라.

종이는 가로선, 세로선, 45도 대각선 중 하나를 따라 정확히 한 번 접혔다. 가로나 세로로 접혔으면 접힌 선은 항상 두 행 사이나 두 열 사이에 있다. 대각선으로 접혔으면 접힌 선은 칸을 대각선으로 지나가고, 접힌 선이 지나는 칸은 항상 #이다. 종이를 접었을 때 서로 맞닿는 두 칸 중 정확히 한 칸만 #이고, 맞닿는 칸이 없는 칸은 금박이 그대로 남아 #이다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. (1≤T≤1001 \le T \le 100)

각 테스트 케이스의 첫 줄에는 사진의 행 수 NN과 열 수 MM이 주어진다. (2≤N,M≤252 \le N, M \le 25) 다음 NN개 줄에는 각각 정확히 MM개의 문자가 주어지며, 각 문자는 # 또는 .이다. .은 적어도 하나 있고, 사진을 설명하는 접힌 선은 항상 존재한다.

출력

각 테스트 케이스마다 접힌 선이 종이의 경계와 만나는 두 위치를 네 정수 r1r_1 c1c_1 r2r_2 c2c_2 순서로 한 줄에 출력한다. rr은 행, cc는 열이고, 왼쪽 위 칸이 (1,1)(1, 1), 오른쪽 아래 칸이 (N,M)(N, M)이다.

가로나 대각선으로 접혔으면 왼쪽 좌표를 먼저 출력하고, 세로로 접혔으면 위쪽 좌표를 먼저 출력한다. 가로로 접혔으면 접힌 선 위쪽 칸의 좌표를, 세로로 접혔으면 접힌 선 왼쪽 칸의 좌표를, 대각선으로 접혔으면 접힌 선이 지나는 칸의 좌표를 쓴다. 가능한 접힌 선이 둘 이상이면 첫 번째 좌표가 가장 작은 것을 고르고, 같으면 두 번째, 세 번째, 네 번째 좌표가 작은 것을 고른다.

예제2

  1. 예제 1

    입력
    3
    8 10
    #.#..##..#
    ####..####
    ###.##....
    ...#..####
    ....##....
    .#.##..##.
    ##########
    ##########
    5 20
    ###########.#.#.#.#.
    ###########...#.###.
    ##########..##.#..##
    ###########..#.#.##.
    ###########.###...#.
    5 5
    .####
    ###.#
    ##..#
    #..##
    #####
    
    예상 출력
    3 1 3 10
    1 15 5 15
    4 1 1 4
    
  2. 예제 2

    입력
    4
    2 2
    #.
    .#
    2 3
    ###
    #.#
    2 3
    #.#
    #.#
    3 2
    ##
    ..
    ##
    
    예상 출력
    1 1 1 2
    1 2 2 3
    1 1 2 1
    1 1 1 2