본문 바로가기

c++/Baekjoon Online

백준 2579 : 계단 오르기 C++

www.acmicpc.net/problem/2579

 

2579번: 계단 오르기

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

www.acmicpc.net

 

 

풀이

1. 우선 계단 3개 연속해서 못밟으니까 이전꺼랑 비교할때 이런 조건을 넣어야됨

 

max( 지금 직전+ 지금 3번째 전, 지금 2번째 전) 

 

2. 그렇기 때문에 당연히 dp 초기화도 0 1 2 이렇게 3개 해줘야된다.

 

 

#include<iostream>
#include<algorithm>
using namespace std;

int step[301];
int dp[301];

int main()
{
	int x;
	cin >> x;

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

	dp[0] = step[0];
	dp[1] = step[0] + step[1];
	dp[2] = step[2] + max(step[1], step[0]);

	for (int i = 3; i < x; i++)
	{
		dp[i] = step[i] + max(step[i - 1] + dp[i - 3], dp[i - 2]);
	}

	cout << dp[x - 1];
	return 0;
}

'c++ > Baekjoon Online' 카테고리의 다른 글

백준 1946 : 신입사원 C++  (0) 2021.06.26
백준 1700 : 멀티탭 스케줄링 C++  (0) 2021.06.24
백준 : 다리 만들기 2 c++  (0) 2020.11.19
백준 : 기타줄 C++  (0) 2020.11.18
백준 : 제곱수의 합 C++ (DP 연습!!)  (0) 2020.11.18