1์ด์์ C์ด๊น์ง ์ด๋ํด์ผ ํ๋ค. ๊ฐ์ฅ ์ด์์ ์ด๋ฉด์ ํ์ดํ๋ผ์ธ์ ์ต๋ํ ๋ง์ด ์ค์นํ ์ ์๋ ๊ฒฝ์ฐ๋ ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ฐ์ ํ์ ์์นํ C์ด๋ก ์ด๋ํ๋ ๊ฒ์ผ ๊ฒ์ด๋ค. ํ์ง๋ง ์ค๊ฐ์ ๊ฑด๋ฌผ๋ค์ด ์์นํด์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฆผ์ฒ๋ผ ์ด์์ ์ผ๋ก ์ผ๋ ฌ๋ก ๋์ด๋๋ ๊ฒ์ ์ด๋ ต๋ค.
๋์ ์ต์ ์ ํํ๋ฅผ ํฅํด ๊ฐ ์๋ ์๋ค. ์ต๋ํ ์ถ๋ฐํ๋ ์์น์ ํ๊ณผ ๊ฐ์ ํ์ ์๋ ์ด๋ก ์ด๋ํ๋ ค๊ณ ํ๋ ๊ฒ์ด๋ค.
๋ฐฉํฅ์ ์ค๋ฅธ์ชฝ ๋๊ฐ์ ์, ์ค๋ฅธ์ชฝ, ์ค๋ฅธ์ชฝ ๋๊ฐ์ ์๋๋ผ๊ณ ํ๋ค. ์ด๋ ๊ฑด๋ฌผ์ ์ํด ๊ธธ์ด ๋น๊ปด๊ฐ์ผํด์ ์๋์ชฝ์ผ๋ก ๋ด๋ ค๊ฐ๋๋ผ๋ ์ต๋ํ ๋ค์ ์์ชฝ์ผ๋ก ์ฌ๋ผ์ค๋ ค๊ณ ํด์ ์ถ๋ฐํ ์ง์ ์ ํ๊ณผ ๊ฐ์ ํ์ ์ด๋ก ์ด๋ํ๋ ค๊ณ ํ๋ค๋ฉด, ๊ทธ๋ฆผ์ฒ๋ผ ์ด์์ ์ธ ํํ๋ก ๊ฐ ์ ์๋ค.
์ค๋ฅธ์ชฝ ๋๊ฐ์ ์, ์ค๋ฅธ์ชฝ, ์ค๋ฅธ์ชฝ ๋๊ฐ์ ์๋ ์์๋๋ก ์ด๋ํ ๊ฒ
์์ ๊ท์น์ ์งํค๋ฉฐ ์์ 2 ๋ฒ์ ์ด๋ ๊ฒฝ๋ก๋ฅผ ๊ทธ๋ฆฌ๋ฉด ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค. 1ํ์์ ์ด๋ํ๋ ๊ฒฝ์ฐ 3์ด์์ ๊ฑด๋ฌผ ๋๋ฌธ์ ์๋๋ก ๋ด๋ ค๊ฐ๊ฒ ๋์ง๋ฉด 4์ด์์ ๋๊ฐ์ ์๋ก ๋จผ์ ์ด๋ํ์๊ณ ๊ฒฐ๊ตญ ์ต์ข ์ ์ผ๋ก 1ํ C์ด์ ๋๋ฌํ๋ฉด์ ์ข ๋ฃ๋๋ค. ์ด๋ ๊ฒ ์์ชฝ์์๋ถํฐ ์ฐจ๋ก๋๋ก ์ถ๋ฐ ์ง์ ์ ํ์ ์๋ C์ด์ ๋๋ฌํ๋ ค๊ณ ํ๋ฉด ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ๊ทธ๋ฆผ์ ์ด์์ ํํ๋ฅผ ์ ์งํ ์ ์๊ณ , ์๋์ ํ๋ค๋ ์ต๋ํ ์ถ๋ฐ ์ง์ ์ ํ์ ์์นํ C์ด์ ๋๋ฌํ ์ ์๋ ํ๋ฅ ์ด ๋์์ง๋ค.
๊ทผ๋ฐ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ๋ค.
๊ธฐ์กด ํ์ด์์๋ ์ด๋ํ๋ ๊ฒฝ๋ก๋ฅผ DFS๋ก ๊ตฌํ๋๋ฐ, ๊ฒฝ๋ก๋ฅผ ์ด๋ํ๋ฉด์ ๊ณ์ํด์ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํ๋ค. ํ์ง๋ง C์ด์ ๋๋ฌํ ์ ์๋ ๊ฒฝ๋ก๋ค์ ๊ฒฝ์ฐ์๋ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ False
๋ก ๋ณ๊ฒฝํด์ ์๋์ ์๋ ํ๋ค ์ญ์ ํด๋น ๊ฒฝ๋ก๋ฅผ ํตํด ํ ๋ฒ ๋ ์ด๋ํ ์ ์๋ ๊ธฐํ๋ฅผ ์ค์ ์ต๋ํ ๋ง์ ํ์ดํ๋ผ์ธ์ ์ค์นํ๋ ค๊ณ ํ๋ค.
ํ์ง๋ง ์ด์ฐจํผ ํ ๋ฒ C์ด์ ๋๋ฌํ ์ ์๋ค๊ณ ํ๋จ๋ ์์น๋ ๋ค๋ฅธ ์ด๋ค ์์น์์ ์ถ๋ฐํด์ ๊ทธ ์์น์ ๋๋ฌํ๋๋ผ๋ ๋๊ฐ์ด C์ด์ ๋๋ฌํ ์ ์๋ค.
์์ ๊ทธ๋ฆผ์์ ๋นจ๊ฐ ์ ์ ๊ฒฐ๊ตญ ์ต์ข ์ ์ผ๋ก C์ด์ ๋๋ฌํ ์ ์๋ค. ์ด๋ฏธ 2๋ฒ์งธ ํ์์ ํ๋จ๋์์ง๋ง, C์ด์ ๋๋ฌํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๊ฐ False ๋ก ๋ณ๊ฒฝ๋์ด ์๊ณ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ 3๋ฒ์งธ ํ์์ ๋ค์ ํด๋น ์์น๋ฅผ ํตํด 2๋ฒ์งธ ํ์์ ์ง๋์ณค๋ ๊ฒฝ๋ก๋ฅผ ๋ค์ ์ง๋์น๊ฒ ๋๋ค.
๊ฒฐ๊ตญ ์ด๋ฏธ ์ ๋๋ค๊ณ ํ๋ช ๋ ์์น๋ฅผ ๊ณ์ ๋ฐ๋ณตํด์ ๋ฐฉ๋ฌธํ๋ ๋ถํ์ํ ์ค๋ณต๊ณผ์ ์ด ์์๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ ๊ฒ์ด๋ค.
# ๋นต์ง
import sys
input = sys.stdin.readline
def dfs(x, y):
global way
visited[x][y] = True
if y == C - 1:
way += 1
return True
for k in range(3):
nx, ny = x + DIR[k][0], y + DIR[k][1]
if (nx < 0 or nx >= R or MAP[nx][ny] == 'x' or visited[nx][ny]): continue
if dfs(nx, ny):
return True
# visited[x][y] = False
return False
R, C = map(int, input().split())
MAP = [list(input()) for _ in range(R)]
visited = [[False] * C for _ in range(R)]
DIR = [(-1, 1), (0, 1), (1, 1)]
way = 0
for i in range(R):
visited[i][0] = True
dfs(i, 0)
print(way)