본문 바로가기
알고리즘/DP

백준 2579번 : 계단 오르기

by Jason95 2021. 1. 22.

문제 링크 : www.acmicpc.net/problem/2579

풀이에 참고한 링크 : sihyungyou.github.io/baekjoon-2579/

내 풀이(2021.1.22.) :

#include <iostream>
#include <algorithm>

using namespace std;

int score[300];
int dp[300];

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N; cin >> N;
	for (int i = 0; i < N; i++) {
		cin >> score[i];
	}

	dp[0] = score[0];
	dp[1] = score[0] + score[1];
	dp[2] = max(score[0], score[1]) + score[2];
	
	if (N < 3) {
		cout << dp[N - 1];
		return 0;
	}
	
	for (int i = 3; i < N; i++) {
		dp[i] = max(dp[i - 3] + score[i - 1], dp[i - 2]) + score[i];
	}

	cout << dp[N - 1];

	return 0;
}

'알고리즘 > DP' 카테고리의 다른 글

백준 1149번 : RGB 거리  (0) 2021.01.29
백준 17626번 : Four Squares  (0) 2021.01.22
백준 2294번 : 동전 2  (0) 2021.01.19
백준 9095번 : 1, 2, 3 더하기  (0) 2021.01.18
백준 1904번 : 01타일  (0) 2021.01.07