#include <stdio.h>
#define max(a, b) (((a)>(b))?(a):(b))
#define MAX 502
int tri[MAX][MAX] = { 0, };
int dp[MAX][MAX] = { 0, }; // i층 j번째 요소까지의 최대합
int main()
{
// 입력
int n;
scanf("%d", &n);
if (n < 1 || n > 500)
return 0;
int i, j;
for (i = 1; i <= n; i++)
for (j = 1; j <= i; j++)
{
scanf("%d", &tri[i][j]);
if (tri[i][j] < 0 || tri[i][j] > 99)
return 0;
}
// 계산
for (i = 1; i <= n; i++)
for (j = 1; j <= i; j++)
dp[i][j] = tri[i][j] + max(dp[i - 1][j - 1], dp[i - 1][j]);
// 출력
int result = 0;
for (j = 1; j <= n; j++)
if (result < dp[n][j]) result = dp[n][j];
printf("%d", result);
/* dp[i][j] 출력
for (i = 1; i <= n; i++)
{
puts("");
for (j = 1; j <= i; j++)
printf("%d ", dp[i][j]);
}
*/
return 0;
}
형님들 왜틀렸는지 감이 전혀 안잡혀요 ㅜㅜㅜ
공지 ㄱ