🚀 [정수 삼각형] Lv. 3 문제
다이나믹 프로그래밍을 사용해 문제를 쉽게 해결할 수 있다.
이전 알고스팟에서 배운 TRIPATHCNT 문제와 동일해 쉽게 풀 수 있었다. TRIPATHCNT
💎 전체 코드는 다음과 같습니다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int N;
int dp[501][501];
int solution(vector<vector<int>> triangle) {
int answer = 0;
N = triangle.size();
dp[0][0] = triangle[0][0];
// 맨왼쪽 줄과 맨오른쪽 줄을 먼저 전처리해준다.
for(int i=0 ; i<N-1; i++){
dp[i+1][0] = dp[i][0] + triangle[i+1][0];
dp[i+1][triangle[i+1].size()-1] = dp[i][triangle[i].size()-1] + triangle[i+1][triangle[i+1].size()-1];
}
for(int i=2; i<N; i++){
for(int j=1; j<triangle[i].size()-1; j++){
dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j];
}
}
for(int i=0; i<N; i++){
answer = max(answer, dp[N-1][i]);
}
return answer;
}
Comments