나의 브을로오그으

[c++] 2579번 : 계단 오르기 본문

알고리즘/BaekJoon

[c++] 2579번 : 계단 오르기

__jhp_+ 2022. 6. 27. 19:38

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

 

2579번: 계단 오르기

계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점

www.acmicpc.net

#include <iostream>

using namespace std;

#define MAX_STAIR		300 + 1

int GetMaxScore(int* stairs, int N);
int GetMax(int n1, int n2);

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

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

	score = GetMaxScore(stairs, N);
	cout << score << '\n';
	return 0;
}

int GetMaxScore(int* stairs, int N)
{
	int sum[MAX_STAIR] = { 0, };
	sum[1] = stairs[1];
	sum[2] = stairs[2] + stairs[1];
	sum[3] = GetMax(stairs[1], stairs[2]) + stairs[3];
	for (int i = 4; i <= N; ++i)
	{
		sum[i] = GetMax(stairs[i - 1] + sum[i - 3], sum[i - 2]) + stairs[i];
	}
	return sum[N];
}

int GetMax(int n1, int n2)
{
	return n1 > n2 ? n1 : n2;
}

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

[c++] 2630번 색종이 만들기  (0) 2022.06.28
[c++] 2606번 : 바이러스  (0) 2022.06.28
[c++] 2178번 : 미로 탐색  (0) 2022.06.23
[c++] 1992번 : 쿼드트리  (0) 2022.06.23
[c++] 1931번 : 회의실 배정  (0) 2022.06.22