| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 | 1024 MB | 212 | 81 | 71 | 44.654% |
$N \times M$ 크기의 격자가 주어진다. 처음에 격자의 각 칸은 막혀있거나 비어 있는 상태이다. 여러분은 1ドル \times 1$ 크기의 조각을 세 개 이어 붙여서 만든 └ 모양 블록과 ┘모양 블록을 무한히 많이 가지고 있다.
여러분은 이 블록을 격자 위에 적절히 배치하여 모든 빈칸을 블록으로 덮고자 한다. 단, 격자 위에 블록을 배치할 때는 다음 조건을 모두 만족해야 한다.
조건을 만족하는 블록의 배치가 있는지 판별하고, 가능하다면 격자에 블록을 배치해 보자.
첫째 줄에 테스트 케이스의 개수를 나타내는 정수 $T$가 주어진다. $(1 \leq T \leq 300\ 000)$
각 테스트 케이스의 첫째 줄에 두 정수 $N,ドル $M$이 공백으로 구분되어 주어진다. $(2 \leq N,M \leq 3\ 000)$
이후 $N$개의 줄에 걸쳐 #과 .으로만 구성된 길이 $M$의 문자열이 한 줄에 하나씩 주어진다. $i+1$번째 줄의 $j$번째 문자가 #이면 격자의 $i$행 $j$열이 막혀 있는 칸임을, .면 빈칸임을 의미한다.
모든 테스트 케이스에서 $N \times M$의 합이 3ドル\ 000^2$을 넘지 않음이 보장된다.
각 테스트 케이스마다 격자에 블록을 배치할 수 있다면 └ 모양 블록을 a, ┘모양 블록을 b로 하여 격자에 블록을 배치한 모습을 출력한다. 답이 여러 개라면 그중 하나를 출력한다.
불가능하다면 -1을 출력한다.
2 3 4 #.## .... .... 2 2 .. ..
#a## aaab aabb -1
위 그림은 첫 번째 테스트 케이스에서 블록이 배치된 모양을 나타낸다.
Contest > BOJ User Contest > 월간 향유회 > 월간 향유회 2025. 07. B번