빛의 왕과 거울의 미로 1
시간 제한2초메모리 제한256 MB
미정 칸에 거울을 배치해 경계 x로 들어간 레이저가 경계 y로 나가게 하는 경우의 수를 셉니다.
문제
어린 빛의 왕은 장난감을 좋아한다. 요즘 가장 좋아하는 장난감은 크기 직사각형 판의 각 칸에 대각선 거울을 꽂았다 뺐다 할 수 있는 장난감이다. 거울을 원하는 대로 꽂은 다음 테두리 칸 하나의 중심을 향해 그 칸의 바깥 변과 수직으로 레이저를 쏘면 레이저가 다른 칸으로 빠져나온다. 어린 빛의 왕은 이 모습을 신기해한다.
어린 빛의 왕은 테두리에 있는 각 칸에 다음 방법으로 자연수 번호를 하나씩 붙였다.
- 위쪽의 개 칸: 왼쪽에서 오른쪽으로 부터 까지
- 왼쪽의 개 칸: 위쪽에서 아래쪽으로 부터 까지
- 오른쪽의 개 칸: 위쪽에서 아래쪽으로 부터 까지
- 아래쪽의 개 칸: 왼쪽에서 오른쪽으로 부터 까지
모서리 칸은 두 변이 판 바깥과 닿으므로 번호를 두 개 받는다. 예를 들어 , 인 판에서 첫 행의 세 칸은 왼쪽부터 , , 번이고, 왼쪽 열의 두 칸은 위에서부터 , 번, 오른쪽 열의 두 칸은 위에서부터 , 번, 마지막 행의 세 칸은 왼쪽부터 , , 번이다. 왼쪽 위 칸은 번이면서 동시에 번이다. 번호는 레이저가 드나드는 변까지 가리킨다. 번으로 쏜 레이저는 왼쪽 위 칸의 위쪽 변을 지나 아래로 들어가고, 번으로 쏜 레이저는 같은 칸의 왼쪽 변을 지나 오른쪽으로 들어간다. 번으로 빠져나온다는 말은 레이저가 번이 가리키는 변을 지나 판 바깥으로 나간다는 뜻이다.
어린 빛의 왕은 요즘 번으로 쏜 레이저가 번으로 빠져나오는 장난감에 큰 관심을 가진다. 그가 원하는 거울 배치는 길이가 인 문자열 개로 주어지고, 각 문자의 뜻은 다음과 같다.
/: 왼쪽에서 들어온 레이저를 위쪽으로, 위쪽에서 들어온 레이저를 왼쪽으로, 오른쪽에서 들어온 레이저를 아래쪽으로, 아래쪽에서 들어온 레이저를 오른쪽으로 반사하는 거울.\: 왼쪽에서 들어온 레이저를 아래쪽으로, 위쪽에서 들어온 레이저를 오른쪽으로, 오른쪽에서 들어온 레이저를 위쪽으로, 아래쪽에서 들어온 레이저를 왼쪽으로 반사하는 거울..: 거울이 없어 레이저가 아무 방해도 받지 않고 지나가는 칸.?: 위 셋 중 어느 것이 와도 상관없는 칸.
?가 많을수록 만들 수 있는 배치도 많아진다. 그중 번으로 쏜 레이저가 번으로 빠져나오는 배치가 몇 개인지 세는 프로그램을 작성하라.
입력
첫 줄에 직사각형 판의 크기를 뜻하는 두 정수 , ()과 , ()가 공백으로 구분되어 주어진다.
다음 개 줄에는 각각 길이가 인 문자열이 주어진다. 이 문자열은 /, \, ., ?로만 이루어져 있다.
판 전체에서 ?의 개수는 개 이하이다.
출력
첫 줄에 번으로 쏜 레이저가 번으로 빠져나오는 배치의 개수를 로 나눈 나머지를 출력한다.