배열의 왼쪽 위 칸에서 오른쪽 아래 칸까지 이동해요. 한 번에 오른쪽 또는 아래로 한 칸만 이동할 수 있어요. 0은 지나갈 수 있는 칸, 1은 막힌 칸이에요.
서로 다른 이동 경로가 몇 개인지 구해서 1,000,000,007로 나눈 나머지를 반환해요. int solution(vector<vector<int>> board)가 올바른 결과를 반환하도록 잘못된 한 줄을 고쳐 주세요.
매개변수와 반환값
행 수와 열 수는 각각 120, 모든 행의 길이는 같아요. 값은 0 또는 1이에요. 시작 칸과 도착 칸도 막혀 있을 수 있어요. 경로가 없으면 0이에요. 1×1에서 그 칸이 열려 있으면 이동하지 않는 경로 한 개를 세요. 배열은 비어 있지 않아요. 반환값은 01,000,000,006인 int예요.
예시
[[0,0,0],[0,1,0],[0,0,0]]→2: 가운데를 피하려면 위쪽 가장자리나 왼쪽 가장자리를 따라가는 두 경로가 있어요.[[0,0,0],[0,0,0]]→3: 아래로 한 번 이동하는 위치를 세 곳 중 하나로 고를 수 있어요.
자동 채점 입력·출력
첫 줄은 행 수 R과 열 수 C예요. 다음 R줄에 C개의 0 또는 1이 있어요. 경로 수의 나머지를 한 줄에 출력해요. main은 채점용이며 수정 대상은 solution의 한 줄이에요.
예시 입력
3 3 0 0 0 0 1 0 0 0 0
예상 결과
2
예시 입력
2 3 0 0 0 0 0 0
예상 결과
3
핵심 개념
dp-2d: 각 칸에 도착하는 경우의 수를 이전 칸에서 이어 받아요.array-2d: 실제 칸과 바깥 경계가 포함된 DP 좌표를 구분해요.