Deff_Dev
[백준] 2579번 계단 오르기 (C++) 본문
문제
https://www.acmicpc.net/problem/2579
풀이
다이나믹 프로그래밍 문제이다.
dp[1] = stair[1];
dp[2] = stair[1] + stair[2];
dp[3] = max( stair[1] + stair[3], stair[2] + stair[3])
dp[n] = stair[n] + max (dp[n - 2], dp[n - 3] + stair[n -1])
#include <iostream>
#include <vector>
using namespace std;
int dp[301] = { 0, };
int main() {
int n;
cin >> n;
vector<int> vec(n + 1);
for (int i = 1; i <= n; i++) {
cin >> vec[i];
}
dp[1] = vec[1];
dp[2] = dp[1] + vec[2];
dp[3] = max(vec[1] + vec[3], vec[2] + vec[3]);
for (int i = 4; i <= n; i++) {
dp[i] = vec[i] + max(dp[i - 2], dp[i - 3] + vec[i - 1]);
}
cout << dp[n];
return 0;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 11053번 가장 긴 증가하는 부분 수열 (0) | 2024.10.27 |
---|---|
[백준] 1463번 1로 만들기 (C++) (0) | 2024.10.27 |
[백준] 설탕 배달 (C++) (0) | 2024.10.27 |
[백준] 2252번 줄 세우기 (C++) (0) | 2024.10.16 |
[백준] 카드 1 (C++) (0) | 2024.10.14 |