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 |