2차원 배열로 해결했다.
#include <iostream>
using namespace std;
#define MOD 10007
int a[501][501];
int dp[501][501];
int main() {
int N;
cin >> N;
for (int i = 1; i <= N ; i++)
{
for (int j = 1; j <= i; j++)
{
int input;
cin >> input;
a[i][j] = input;
}
}
int ans = a[1][1];
dp[1][1] = a[1][1];
for (int i = 2; i <= N; i++)
{
for (int j = 1; j <= i; j++)
{
if (j == 1)
{
dp[i][j] = dp[i - 1][j] + a[i][j];
}
else if (j == i)
{
dp[i][j] = dp[i - 1][j - 1] + a[i][j];
}
else
{
dp[i][j] = a[i][j] + max(dp[i - 1][j - 1], dp[i - 1][j]);
}
ans = max(ans, dp[i][j]);
}
}
cout << ans;
return 0;
}
'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글
[C++ / 백준 3085번] 사탕 게임 (0) | 2024.12.05 |
---|---|
[C++ / 백준 11054번] 가장 긴 바이토닉 부분 수열 (0) | 2024.11.30 |
[C++ / 백준 9465번] 스티커 (0) | 2024.11.28 |
[C++ / 백준 2225번] 합분해 (0) | 2024.11.23 |
[C++ / 백준 1699번] 제곱수의 합 (0) | 2024.11.23 |