[๋ฐฑ์ค(BOJ)] ๊ณ๋จ ์ค๋ฅด๊ธฐ(2579) C++
๋ฌธ์ : BOJ_2579๋ฒ ๊ณ๋จ ์ค๋ฅด๊ธฐ
๋ฌธ์ ์ค๋ช
DP
๊ฐ ๊ณ๋จ๋ง๋ค ์ ์๊ฐ ์๊ณ , ๋์ฐฉ ์ง์ ๊น์ง ๊ณ๋จ์ ์ค๋ฅด๋ฉฐ ์ ์๋ฅผ ๋ํด์ ์ต๋๊ฐ์ด ๋์์ผ ํฉ๋๋ค.
์ด๋ ๊ณ๋จ์ ํ ๋ฒ์ ํ ๊ณ๋จ์ด๋ ๋ ๊ณ๋จ์ฉ ์ค๋ฅผ ์ ์๊ณ , ์ธ ๊ฐ์ ๊ณ๋จ์ ์ฐ์ํด์ ๋ฐ์ ์๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ๋์ฐฉ ์ง์ ์ ๊ณ๋จ์ ๋ฐ๋์ ๋ฐ์์ผ ํฉ๋๋ค.
Solution
dp๋ฅผ ํ์ฉํ์ฌ ํด๊ฒฐํ์์ต๋๋ค.dp[ํ์ฌ ๊ณ๋จ ์ธ๋ฑ์ค][์ด์ ๊ณ๋จ๊ณผ ์ฐ์ํด์ ๋ฐ์๋์ง์ ์ ๋ฌด] = ํ์ฌ ๊ณ๋จ๊น์ง์ ์ต๋๊ฐ
์ผ๋ก dp ์์ ์ง๋ดค์ต๋๋ค.
ํ์ฌ ๊ณ๋จ์์ ์ด์ ๊ณ๋จ๊ณผ ์ฐ์ํด์ ๋ฐ์ง ์์๋ค๋ฉด, ํ์ฌ ๊ณ๋จ ์ธ๋ฑ์ค-2
์ ๊ณ๋จ์์์ ์ต๋๊ฐ์ ๊ฐฑ์ ํด ์ฃผ์ด์ผ ํฉ๋๋ค.
์ด๋ ํ์ฌ๋ณด๋ค 2๊ฐ ๋ฎ์ ์ธ๋ฑ์ค์ ๊ณ๋จ์ ์ด์ ๊ณ๋จ๊ณผ ์ฐ์ํด์ ๋ฐ์ ๊ฒฝ์ฐ์ ์ฐ์ํด์ ๋ฐ์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ ๊ฐ๋ฅํ๋ฏ๋ก ๋ ์ค์ ์ต๋๊ฐ์ ๊ฐฑ์ ํด ์ฃผ์ด์ผ ํฉ๋๋ค.
ํ์ฌ ๊ณ๋จ์์ ์ด์ ๊ณ๋จ๊ณผ ์ฐ์ํด์ ๋ฐ๋๋ค๋ฉด, ์ด์ ๊ณ๋จ์์ ์ฐ์ํด์ ๋ฐ์ง ์์ ๊ฒฝ์ฐ์ ํ์ฌ ๊ณ๋จ์ ์ ์๋ฅผ ๋ํด์ฃผ๋ฉด ์ต๋๊ฐ์ด ๋ฉ๋๋ค.
Description
- ์ฒซ ๋ฒ์งธ ๊ณ๋จ์ ๋ํด์ ,
dp[1][0]=1๋ฒ์งธ ๊ณ๋จ ์ ์
,dp[1][1]=0
์ผ๋ก ํ ๋นํด ์ฃผ๊ณ ์์ํ์ต๋๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int dp[301][2];
vector<int> adj;
int main(){
cin >> n;
adj.resize(n+1);
for(int i=1; i<=n; i++){
cin >> adj[i];
}
dp[1][0]=adj[1];
dp[1][1]=0;
for(int i=2;i<=n;i++){
dp[i][0]=max(dp[i-2][0],dp[i-2][1]);
dp[i][0]+=adj[i];
dp[i][1]=dp[i-1][0] + adj[i];
}
cout << max(dp[n][0],dp[n][1]) << '\n';
return 0;
}
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] Thread Knots(17976) (0) | 2022.03.13 |
---|---|
[BOJ] LCS(9251) (0) | 2022.03.12 |
[BOJ] ์ด์ง ํธ๋ฆฌ(13325) (0) | 2022.03.12 |
[BOJ] ํด์ฌ(14501) (0) | 2022.03.12 |
[BOJ] ํ๋ฒํ ๋ฐฐ๋ญ(12865) (0) | 2022.03.12 |