728x90
1 <= i <= n, 1 <= j <= i 범위로 돌려서
dp[i][j] = max(dp[i][j] + dp[i - 1][j], dp[i][j] + dp[i - 1][j - 1]) 을 수행해주면 답이 나온다
(자기자신의 윗부분, 자기자신의 대각선 왼쪽 윗 부분 비교)
- c++
#include <bits/stdc++.h>
#define MAX 501
using namespace std;
int n;
int dp[MAX][MAX];
int main() {
cin.tie(0);
ios_base::sync_with_stdio(0);
cin >> n;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
cin >> dp[i][j];
}
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
dp[i][j] = max(dp[i][j] + dp[i - 1][j], dp[i][j] + dp[i - 1][j - 1]);
}
}
int answer = -1;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
answer = max(answer, dp[i][j]);
}
}
cout << answer;
return 0;
}
|
cs |
728x90
'PS' 카테고리의 다른 글
BOJ 14502 - 연구소 (0) | 2020.12.03 |
---|---|
프로그래머스 - N 으로 표현 (0) | 2020.12.03 |
BOJ 15898 - 피아의 아틀리에 신비한 대회의 연금술사 (0) | 2020.11.30 |
프로그래머스 - 튜플 (0) | 2020.11.29 |
프로그래머스 - 쿼드압축 후 세기 (0) | 2020.11.28 |