#include <vector>
using namespace std;
 
int MOD = 20170805;
 
// 전역 변수를 정의할 경우 함수 내에 초기화 코드를 꼭 작성해주세요.
int solution(int m, int n, vector<vector<int>> city_map) 
{
    int answer = 0;
    int dp[510][510][2= {0}; // 0 왼쪽, 1 위쪽
    int row = city_map.size();
    int col = city_map[0].size();
    
    for(int i = 0; i < row; i++)
    {
        if(city_map[i][0== 1)
        {
            break;
        }
        
        dp[i][0][1= 1;
    }
    
    for(int i = 0; i < col; i++)
    {
        if(city_map[0][i] == 1)
        {
            break;
        }
        
        dp[0][i][0= 1;
    }
    
    for(int i = 1; i < row; i++)
    {
        for(int j = 1; j < col; j++)
        {
            if(city_map[i-1][j] == 0)
            {
                dp[i][j][1+= (dp[i-1][j][0+ dp[i-1][j][1]) % MOD;
            }
            else if(city_map[i-1][j] == 2)
            {
                dp[i][j][1+= (dp[i-1][j][1] % MOD);
            }
            
            if(city_map[i][j-1== 0)
            {
                dp[i][j][0+= (dp[i][j-1][0+ dp[i][j-1][1]) % MOD;
            }
            else if(city_map[i][j-1== 2)
            {
                dp[i][j][0+= (dp[i][j-1][0] % MOD);
            }
        }
    }
    
    return (dp[row-1][col-1][0+ dp[row-1][col-1][1]) % MOD;
}
cs

+ Recent posts