|
์ฝ๋ ์์ฑํ๊ธฐ
#include<vector>
#include<algorithm>
using namespace std;
int solution(vector<vector<int>> triangle) {
int answer = 0;
int s = triangle.size();
triangle[0].push_back(triangle[0][0]);
for (int i = 1; i < s; i++) {
triangle[i][0] = triangle[i][0] + triangle[i - 1][0];
triangle[i][i] = triangle[i][i] + triangle[i - 1][i - 1];
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i][j] + max(triangle[i - 1][j], triangle[i - 1][j - 1]);
}
}
for (int i = 0; i < s; i++) answer = max(answer, triangle[s - 1][i]);
return answer;
}
C++
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
1.
j = 0 โ ์์์ ๋ด๋ ค์ฌ ๋ ์ ํ์ง๊ฐ dp[i-1][0]์์ ๋ด๋ ค์ค๋ ๋ฐฉ๋ฒ๋ง ์์ผ๋ฏ๋ก dp[i-1][0] + dp[i][0]
2.
j = i โ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ์ง๊ฐ dp[i-1][i-1]์์ ๋ด๋ ค์ค๋ ๋ฐฉ๋ฒ๋ง ์์ผ๋ฏ๋ก dp[i-1][i-1] + dp[i][i]
3.
1โคj<i โ dp[i-1][j]์ dp[i-1][j-1] ์ค ํฐ ๊ฐ์ ์ ํํ์ฌ dp[i][j]์ ๋ํ๋ค
๋ฌธ์ ๋๋ก ์์์ ๋ด๋ ค์ฌ ๋ ์์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์ค ํฐ ๊ฐ์ ์ ํํด ํ์ฌ ๊ฐ๊ณผ ๋ํด์ฃผ๋ฉด ๋๋ ๋ฌธ์