개발/C++

[BOJ] 2579 - 계단 오르기

#include<iostream>

int max(int a, int b);

int main() {
	int n;
	std::cin >> n;
	int* points = new int[n];
	int* tmp = new int[n];
	for (int i = 0; i < n; i++) {
		std::cin >> points[i];
		tmp[i] = 0;
	}

	tmp[0] = points[0];
	tmp[1] = points[1];
	for (int i = 0; i < n - 1; i++) {
		if (n - 1 - i >= 3) {
			tmp[i + 2] = max(tmp[i + 2], tmp[i] + points[i + 2]);
			tmp[i + 3] = max(tmp[i + 3], tmp[i] + points[i + 1] + points[i + 3]);
		}
		else if (n - 1 - i == 2)
			tmp[i + 2] = max(tmp[i + 2], tmp[i] + points[i + 2]);
		else
			tmp[i + 1] = max(tmp[i + 1], tmp[i] + points[i + 1]);
	}

	std::cout << tmp[n - 1];
}

int max(int a, int b) {
	if (a > b)
		return a;
	else
		return b;
}

'개발 > C++' 카테고리의 다른 글

[BOJ] 11650 - 좌표정렬하기  (0) 2022.07.21
[BOJ] 11727 - 2xn 타일링 2  (0) 2022.07.21
[BOJ] 10828 - 스택  (0) 2022.07.21
[BOJ] 1620 - 나는야 포켓몬 마스터 이다솜  (0) 2022.06.02
[BOJ] 10816 - 숫자카드2  (0) 2022.06.02