프로그래머스 - 등굣길

phoenixKim·2021년 9월 4일
0

풀이전략

1) 일단 기존의 좌표체계가 뒤집어졌다.
이것을 염두에 두고 풀어야한다.
우리의 좌표체계에 맞게 설계해야 한다.

: 학교의 위치가 (4,3) 이라고 하는데, 우리의 좌표체계로는 저 부분은 (3,4)
일 수 밖에 없다.

2) 놓친점으로는 부등호처리를 못해줬다는 점...

: 반복문 조건 처리를 못해줬다.
생각을 많이 하도록...

3) 문제에서 최소 경로의 수를 구하는 것이고, 오른쪽, 아래쪽으로만 이동이 가능하다고 하므로
dp[x][y] = dp[x - 1][y] + dp[x][y - 1]을 생각해낼 수 있다.

4) 웅덩이 처리를 어떻게 할 것이냐?
: 웅덩이는 초기값에서 정해지므로 puddles를 보고 설정해야 한다.
여기서 우리의 좌표체계대로 설정해야 한다.

소스코드

#include <string>
#include <vector>

using namespace std;

int solution(int m, int n, vector<vector<int>> puddles) {
    int answer = 0;
    
    vector<vector<int>>dp(n + 1, vector<int>(m + 1,0));
    
    for(const auto i : puddles)
    {
        dp[i[1]][i[0]] = -1;
    }
    
    
    dp[1][0] = 1;
    
    //0904 : 놓친점 - 부등호... 
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= m; j++)
        {
            
            
            if(dp[i][j] == -1)
                dp[i][j] = 0;
            else
                dp[i][j] = (dp[i - 1][j] + dp[i][j -1])  % 1000000007;
        }
    }
    
    answer = dp[n][m];
    
    return answer;
}
profile
🔥🔥🔥

0개의 댓글

관련 채용 정보