BOJ 2579 계단 오르기
백준 2579
#include <bits/stdc++.h>
using namespace std;
int score[30005];
int d[30005][3];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> score[i];
if (n == 1) {
cout << score[1];
return 0;
}
if (n == 2) {
cout << score[1] + score[2];
return 0;
}
//d[i][j]가 있을 때, i는 현재 계단, j는 연속해서 오른 계단 개수
d[1][1] = score[1];
d[1][2] = 0;
d[2][1] = score[2];
d[2][2] = d[1][1] + score[2];
for (int i = 3; i <= n; i++) {
d[i][1] = max(d[i - 2][1], d[i - 2][2]) + score[i];
d[i][2] = d[i - 1][1] + score[i];
}
cout << max(d[n][1], d[n][2]);
}
최근댓글