개발/코딩테스트

프로그래머스 등굣길

캐리캐리 2025. 1. 11. 00:31

행 : n , 열 : m ,  물이 잠긴 지역의 좌표 : puddles

 

1,1로 가는 경우 0,1로 간 총횟수와  1,0으로 간 총횟수를 더한 값 

시작지점을 1로 설정하여 이후 값을 더함 

 

public int solution(int m, int n, int[][] puddles) {
	int[][]dp = new int[n][m];
    
    for(int[] puddle : puddles)
    	dp[puddle[1]-1][puddle[0]-1] = -1;
        
    dp[0][0] = 1;    
    
    for(int i=0; i<n; i++){
    	for(int j=0; j<m;j++){
        	if(dp[i][j] ==-1){
            	dp[i][j] = 0;
            	continue;
            }
        
        	if(i>0)
            	dp[i][j]+=dp[i-1][j]% 1000000007;

        	if(j>0)
            	dp[i][j]+=dp[i][j-1]% 1000000007;
        }
    }
    
    return dp[i-1][j-1] % 1000000007 ;
}