https://www.acmicpc.net/problem/1932


#include<iostream>

#include<memory.h>

#include<algorithm>


int dp[501];

int arr[501];


using namespace std;


int main(void)

{

int n,num=0;

int i=0, j, k;


memset(arr, 0, sizeof(arr));

memset(dp, 0, sizeof(arr));


cin >> n;


while (n != i)

{

num += ++i;

}


for (i = 1; i <= num; i++)

cin >> arr[i];


j = num;

k = n;


for (i = num; i >= 1; i--)

{

if (i == j - k)

{

j = i;

k--;

}

if (i > num - n)

{

dp[i] = arr[i];

}

else

{

dp[i] = max(dp[i + k + 1], dp[i + k]) + arr[i];

}

}


cout << dp[1] << endl;


return 0;

}


남들 소스 보면 dp 2차원으로 이용해서 하던데 1차원으로 했는데 왜 런타임 뜨는거죠? ㅡ.ㅡ