-
[BaekJoon] 2579๋ฒ : ๊ณ๋จ ์ค๋ฅด๊ธฐSW Test/BaekJoon 2021. 4. 18. 19:58๋ฐ์ํ
- ์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
- DP๋ฅผ ํ์ฉํ์ฌ ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ์ ๋๋ค.
- ๊ธฐ์กด์ DP๋ 1์ฐจ์ ์ ํ์์ ์ฌ์ฉํ๋ค๋ฉด, ์ด๋ฒ ๋ฌธ์ ๋ 2์ฐจ์๋ฐฐ์ด์ ์ด์ฉํ ์ ํ์์ ๊ตฌํด์ผ ํฉ๋๋ค. (์ฐ์์ ์ผ๋ก 3๊ฐ์ ๊ณ๋จ์ ๋ฐ๋์ง์ ๋ํ ํ๋จ ๋๋ฌธ์)
- D[i][1] : i๋ฒ์งธ ๊ณ๋จ๊น์ง ํฌํจํ์ฌ ์ฐ์๋ ๊ณ๋จ ์๊ฐ 1์ธ ๊ฒฝ์ฐ, ์ฆ D[i-1]์ ๋ฐ์ง ์๊ณ , D[i-2]๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ
- D[i][2] : i๋ฒ์งธ ๊ณ๋จ๊น์ง ํฌํจํ์ฌ ์ฐ์๋ ๊ณ๋จ ์๊ฐ 2์ธ ๊ฒฝ์ฐ, ์ฆ D[i-1]์ ๋ฐ๊ณ D[i]๋ฅผ ์ฐ์์ ์ผ๋ก ๋ฐ์ ๊ฒฝ์ฐ
- ๋ฐ๋ผ์ D[num][1]๊ณผ D[num][2] ์ค์ ์ต๋๊ฐ์ด ๋ต์ด ๋ฉ๋๋ค.
#include<iostream> #include<algorithm> using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); int vec[350]; int num; cin>>num; vec[0] = 0; for(int i=1;i<=num;i++){ cin>>vec[i]; } int d[350][3]; d[0][1] = 0; d[0][2] = 0; d[1][1] = vec[1]; d[1][2] = 0; for(int i=2;i<=num;i++){ d[i][1] = max(d[i-2][1] , d[i-2][2])+vec[i]; d[i][2] = d[i-1][1] + vec[i]; } int result = d[num][1]>d[num][2]?d[num][1]:d[num][2]; cout<<result; }
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ฐ์ํ'SW Test > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BaekJoon] 11659๋ฒ : ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 (0) 2021.04.19 [BaekJoon] 1149๋ฒ : RGB ๊ฑฐ๋ฆฌ (0) 2021.04.19 [BaekJoon] 9095๋ฒ : 1, 2, 3 ๋ํ๊ธฐ (0) 2021.04.18 [BaekJoon] 1463๋ฒ : 1๋ก ๋ง๋ค๊ธฐ (0) 2021.04.18 [BaekJoon] 1431๋ฒ : ์๋ฆฌ์ผ ๋ฒํธ (0) 2021.04.18