#include <string>
#include <vector>

using namespace std;

int dp[510][510];
vector<vector<int> > *arr;

void init() {
    for(int i=0;i<510;++i) {
        for(int j=0;j<510;++j) {
            dp[i][j] = 0;
        }
    }
}

int dfs(int depth, int idx) {
    if(depth == arr->size()) {
        return 0;
    }    
    if(dp[depth][idx] != 0) {
        return dp[depth][idx];
    }
    
    dp[depth][idx] = max((*arr)[depth][idx] + dfs(depth + 1, idx), 
    			(*arr)[depth][idx] + dfs(depth + 1, idx + 1));    
 
   
    return dp[depth][idx];
}

int solution(vector<vector<int>> triangle) {
    arr = &triangle;
    init();
    int answer = 0;
    answer = dfs(0,0);
    return answer;
}

'알고리즘' 카테고리의 다른 글

백준 2776 CPP, js  (0) 2020.09.04
[javascript] b1072.js  (0) 2020.09.03
[DC] 백준 1992 쿼드트리  (0) 2018.04.29
[DC] 백준 1074 Z  (0) 2018.04.29
[DC] 백준 2261 가장 가까운 두 점  (0) 2018.04.29

+ Recent posts