https://www.acmicpc.net/problem/2579
#include
#include
using namespace std;
int n;
int stair[301];
int dp[301];
int main(void) {
cin >> n;
for(int i = 1; i <= n; i++)
cin >> stair[i];
dp[n] = stair[n];
dp[n-1] = max(stair[n] + stair[n-1], stair[n-1]);
dp[n-2] = max(stair[n] + stair[n-2], stair[n] + stair[n-1]);
for(int i = n-3; i >= 0; i--) {
dp[i] = max(dp[i+2] + stair[i], dp[i+3] + stair[i+1] + stair[i]);
}
cout <
}
다른사람 코드 보니까 진짜 거의 똑같던데 반례가 뭐길래 TC를 통과 못하는걸까요
dp[0]에서 문제 발생할 것 같은 느낌적인 느낌
stair[0]=0 초기화부터 하셈
dp[n] = stair[n]; dp[n-1] = stair[n] + stair[n-1]; dp[n-2] = stair[n] + stair[n-2]; 로 고치면 맞음
위에서부터 계단을 밟아내려 오는 걸로 짠 거 같은데, 니 코드는 dp[n-2]가 n-2번째 계단을 안 밟을 수도 있음
감사합니당