Java

[java] 프로그래머스 : 등굣길

openDeveloper 2023. 4. 4. 17:27

https://school.programmers.co.kr/learn/courses/30/lessons/42898

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 접근법 : n,m으로 DP 배열(n+1, m+1)을 만들고 웅덩이는 루트 계산에서 빼기 위해 0으로 처리해 경로 계산을 해준다. dp[i][j] += (dp[i-1][j]+dp[i][j-1]) 의 의미는 왼쪽에서 오는 경우와 위쪽에서 오는 경우를 합친 경우의 수이다

 

 

class Solution {
    public int solution(int m, int n, int[][] puddles) {
            int answer = 0;
            int[][] dp = new int[n+1][m+1];

            for(int[] puddle : puddles){
                dp[puddle[1]][puddle[0]] = -1;
            }

            dp[1][1] = 1;
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= m; j++) {
                    if (dp[i][j] == -1) {
                        dp[i][j] = 0;
                        continue;
                    }
                    dp[i][j] += (dp[i-1][j]+dp[i][j-1]) % 1000000007;
                }
            }


            return dp[n][m];
        }
}

'Java' 카테고리의 다른 글

정규식 알아보기  (0) 2023.04.28
[알고리즘] 04/06 알고리즘 공부  (0) 2023.04.07
[java] 프로그래머스 : 정수 삼각형  (0) 2023.04.04
[java] 프로그래머스 : N으로 표현  (0) 2023.04.04
[java] Stream() 정리하기  (0) 2023.04.02