테스트 케이스는
입력
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
출력
30
입니다
제 코드는
#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);
return 0;
}
입니다
감사합니다 행님들...
코드를 올리실떄 이렇게 올리시지말구.. 깔끔히 보여지는 사이트 이용하여 다시 올리시는게 좋을거 같습니다.
트리로 푸는거아냐?
ㄴ 혹시 프로그램 이름 알 수 있을까요??
배열로 풀어도 될거같긴하지만서도..
아니 사이트 이름
백준같은데?
백준임;
백준 1932번 문제 맞습니다
맞는거같은데 컴키기귀찮은데
c에서는 전역 자동으로 0으로 초기화 안해주나?