프로그래머스 등굣길 dp c++ 디버깅

2023. 10. 26. 16:12카테고리 없음

코드

#include <string>
#include <vector>
#define DIV 
using namespace std;

int arr[101][101];
long long dp[101][101];

#define DIV 1000000007

int solution(int m, int n, vector<vector<int>> puddles) {
    int answer = 0;

    // 물 표시

    for (int i = 0;i < puddles.size();i++) {
        int x = puddles[i][0], y = puddles[i][1];
        arr[y - 1][x - 1] = -1;
        dp[y - 1][x - 1] = 0;
    }

    if (arr[0][0] != -1) {
        dp[0][0] = 1;
    }

    for (int i = 1;i < n;i++) {
        if (arr[i][0] == -1) {
            continue;
        }
        if (dp[i - 1][0] == 0) {
            dp[i][0] = 0;
        }
        else {
            dp[i][0] = 1;
        }
    }

    for (int i = 1;i < m;i++) {
        if (arr[0][i] == -1) {
            continue;
        }
        if (dp[0][i - 1] == 0) {
            dp[0][i] = 0;
        }
        else {
            dp[0][i] = 1;
        }
    }

    // dp
    for (int i = 1;i < n;i++) {
        for (int j = 1;j < m;j++) {
            if (arr[i][j] == -1) continue;
            if (arr[i][j - 1] != -1) {
                dp[i][j] += (dp[i][j - 1] % DIV);
            }
            if (arr[i - 1][j] != -1) {
                dp[i][j] += (dp[i - 1][j] % DIV);
            }
        }
    }
    answer = (dp[n - 1][m - 1] % DIV);
    return answer;
}

int main(void) {
    solution(4, 3, { {2, 1}, {1, 2} });
    return 0;
}

 

테케 1,9,10 틀리시는분 참고하세요

test case : solution(4, 3, { {2, 1}, {1, 2} });

 

int main(void) {
    solution(4, 3, { {2, 1}, {1, 2} });
    return 0;
}

이거 달고 다시 풀어보세요. 올바른 답은 0입니다.

 

참고 자료 :

https://school.programmers.co.kr/questions/15829