첫째 줄에 가로 길이 N, 세로 길이 M을 입력
연속된 2x2 칸이 채워지지 않은 모든 경우의 수를 출력
왼쪽에서 오른쪽, 위에서 아래로 순차적으로 접근하기 때문에 2x2 조건에 대하여 왼쪽 상단([y, x-1], [y-1, x], [y-1, x-1])만 체크
if x+1 < M:
dy = y
dx = x+1
else:
dy = y+1
dx = 0
def check(y, x, map_):
if map_[y-1][x] + map_[y][x-1] + map_[y-1][x-1] == 3: return False
else: return True
def dfs(y, x, map_)
...
...
if y==0 or x==0 or check(y, x, map_):
ans += 1
map_[y][x] = 1
dfs(dy, dx, map_)
map_[y][x] = 0
dfs(dy, dx, map_)
if y == N: return