๋ฌธ์ :
https://www.acmicpc.net/problem/2579
2579๋ฒ: ๊ณ๋จ ์ค๋ฅด๊ธฐ
๊ณ๋จ ์ค๋ฅด๊ธฐ ๊ฒ์์ ๊ณ๋จ ์๋ ์์์ ๋ถํฐ ๊ณ๋จ ๊ผญ๋๊ธฐ์ ์์นํ ๋์ฐฉ์ ๊น์ง ๊ฐ๋ ๊ฒ์์ด๋ค. <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ๊ฐ๊ฐ์ ๊ณ๋จ์๋ ์ผ์ ํ ์ ์๊ฐ ์ฐ์ฌ ์๋๋ฐ ๊ณ๋จ์ ๋ฐ์ผ๋ฉด ๊ทธ ๊ณ๋จ์ ์ฐ์ฌ ์๋ ์
www.acmicpc.net
๋ถ์ :

๊ณ๋จ์ด ์์ ์ ๊ณ๋จ์ ์ค๋ฅด๋๋ฐ ๊ท์น์ด ์๋ค --> ์ ํ์์ด๊ตฐ
- ๊ณ๋จ์ ํ ๋ฒ์ ํ ๊ณ๋จ์ฉ ๋๋ ๋ ๊ณ๋จ์ฉ ์ค๋ฅผ ์ ์๋ค. ์ฆ, ํ ๊ณ๋จ์ ๋ฐ์ผ๋ฉด์ ์ด์ด์ ๋ค์ ๊ณ๋จ์ด๋, ๋ค์ ๋ค์ ๊ณ๋จ์ผ๋ก ์ค๋ฅผ ์ ์๋ค.
- ์ฐ์๋ ์ธ ๊ฐ์ ๊ณ๋จ์ ๋ชจ๋ ๋ฐ์์๋ ์ ๋๋ค. ๋จ, ์์์ ์ ๊ณ๋จ์ ํฌํจ๋์ง ์๋๋ค.
- ๋ง์ง๋ง ๋์ฐฉ ๊ณ๋จ์ ๋ฐ๋์ ๋ฐ์์ผ ํ๋ค.
stairArr [i] = i๋ฒ์งธ ๊ณ๋จ์ ๊ฐ
d [i] = i๋ฒ์งธ ๊ณ๋จ๊น์ง ๋ฐ์์๋ ์ด ๊ณ๋จ์ ์ต๋ ๊ฐ
1๋ฒ์งธ ๊ณ๋จ์ ๋ฐ์์๋ ์ต๋ ๊ฐ์ ๊ณ๋จ์ ๋ฐ์์ผ ํ๋ค --> d[0] = stairArr[0]
2๋ฒ์งธ ๊ณ๋จ์ ๋ฐ์์๋ ์ต๋ ๊ฐ์ ๋ ๊ณ๋จ์ ๋ชจ๋ ๋ฐ์์ผ ํ๋ค -> d[1] = stairArr[0] + stairArr[1]
3๋ฒ์งธ ๊ณ๋จ์ ๋ฐ์์๋ ์ต๋ ๊ฐ์ 3๋ฒ์งธ ๊ณ๋จ์ ๋ฐ๊ณ 1, 2 ์ค ํ๋์ ๊ณ๋จ๋ง์ ๋ฐ์์ผ ํ๋ค -> max(stairArr[0], stairArr[1]) + stairArr[2]
๋ฐ๋ผ์ ์ ํ์์
๋ง์ง๋ง ๊ณ๋จ์ ๋ฐ์์๋ ์ ์ ๊ณ๋จ๊น์ง์ ์ต๋ ๊ฐ๊ณผ // ๋ง์ง๋ง ๊ณ๋จ์ ๋ฐ์์ ๋ ์ ์ ์ ๊ณ๋จ๊น์ง์ ์ต๋ ๊ฐ + ์ ์ ๊ณ๋จ์ ๊ฐ์ผ๋ก ์ ๋ฆฌํ ์ ์๋ค.
๋ฐ๋ผ์ !!
d[i] = max(d[i - 3] + stairArr[i - 1] + stairArr[i], d[i - 2] + stairArr[i])
๊ฐ ๋๋ค.
c++ ํ์ด :
//
// 2579_stairUp.cpp
// SOMA๐ฉ๐ปโ๐ป
//
// Created by JoSoJeong on 2021/06/13.
//
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
int Tcase;
int stairArr[301] = {0, };
int d[10001] = {0, };
int find_best_DP(){
int answer = 0;
d[0] = stairArr[0];
d[1] = stairArr[0] + stairArr[1];
d[2] = max(stairArr[0], stairArr[1]) + stairArr[2];
for(int i = 3; i < Tcase; i++){
//์ ์ ์ ๊ณ๋จ๊น์ง ์ต๋ ๊ฐ + ์ ๊ณ๋จ + ๋ง์ง๋ง ๊ณ๋จ, ์ ์ ๊ณ๋จ๊น์ง์ ์ต๋ ๊ฐ + ๋ง์ง๋ง ๊ณ๋จ
d[i] = max(d[i - 3] + stairArr[i - 1] + stairArr[i], d[i - 2] + stairArr[i]);
}
answer = d[Tcase - 1];
return answer;
}
int main(){
cin >> Tcase;
for(int i = 0; i < Tcase; i++){
cin >> stairArr[i];
}
cout << find_best_DP() << '\n';
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1463 1๋ก ๋ง๋ค๊ธฐ DP (0) | 2021.08.23 |
---|---|
[๋ฐฑ์ค] 5567 ๊ฒฐํผ์ ๊ตฌํ (0) | 2021.06.13 |
[๋ฐฑ์ค] 1149 RGB ๊ฑฐ๋ฆฌ DP (0) | 2021.05.08 |
[๋ฐฑ์ค] 16236 ์๊ธฐ ์์ด DFS, Priority-Queue (0) | 2021.05.06 |
[๋ฐฑ์ค] 9095 1,2,3 ๋ํ๊ธฐ DP (0) | 2021.05.04 |
๋๊ธ