1.문제
2.코드
C = int(input())
coverType =[[[0,0], [1,0], [0,1]],
[[0,0], [0,1], [1,1]],
[[0,0], [1,0],[1,1]],
[[0,0], [1,0], [1,-1]]
]
def set(board, y, x, Type, delta) :
able = True
for i in range(3) :
ny = y + coverType[Type][i][0]
nx = x + coverType[Type][i][1]
if ny < 0 or ny >= len(board) or nx < 0 or nx >= len(board[0]) :
able = False
else :
board[ny][nx] += delta
if board[ny][nx] > 1 :
able = False
return able
def cover(board) :
y = x = -1
for i in range(len(board)) :
for j in range(len(board[1])) :
if board[i][j] == 0 :
y = i
x = j
break
if y != -1 :
break
if y == -1 :
return 1
ret = 0
for k in range(4) :
if set(board, y, x, k, 1) :
"""for i in range(len(board)) :
print(board[i])
print()"""
ret += cover(board)
set(board, y, x, k, -1)
return ret
for c in range(C) :
H, W = map(int, input().split())
board = [[] for i in range(H)]
for h in range(len(board)) :
board[h] = list(input())
for h in range(len(board)) :
for w in range(len(board[0])) :
if board[h][w] == '#' :
board[h][w] = 1
else :
board[h][w] = 0
if sum(x.count(0) for x in board) % 3 != 0 :
print(0)
continue
else :
print(cover(board))
3.Review