๐ป
[๋ฐฑ์ค] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ - 11052. ์นด๋ ๊ตฌ๋งคํ๊ธฐ ๋ณธ๋ฌธ
[๋ฐฑ์ค] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ - 11052. ์นด๋ ๊ตฌ๋งคํ๊ธฐ
๋ํจ๋ 2020. 3. 27. 14:44๋ฌธ์
์์ฆ ๋ฏผ๊ท๋ค ๋๋ค์์๋ ์คํํธ๋งํฌ์์ ๋ง๋ PS์นด๋๋ฅผ ๋ชจ์ผ๋ ๊ฒ์ด ์ ํ์ด๋ค.
PS์นด๋๋ PS(Problem Solving)๋ถ์ผ์์ ์ ๋ช ํ ์ฌ๋๋ค์ ์์ด๋์ ์ผ๊ตด์ด ์ ํ์๋ ์นด๋์ด๋ค. ๊ฐ๊ฐ์ ์นด๋์๋ ๋ฑ๊ธ์ ๋ํ๋ด๋ ์์ด ์น ํด์ ธ ์๊ณ , ๋ค์๊ณผ ๊ฐ์ด 8๊ฐ์ง๊ฐ ์๋ค.
- ์ ์ค์นด๋
- ๋ ๋์นด๋
- ์ค๋ ์ง์นด๋
- ํผํ์นด๋
- ๋ธ๋ฃจ์นด๋
- ์ฒญ๋ก์นด๋
- ๊ทธ๋ฆฐ์นด๋
- ๊ทธ๋ ์ด์นด๋
์นด๋๋ ์นด๋ํฉ์ ํํ๋ก๋ง ๊ตฌ๋งคํ ์ ์๊ณ , ์นด๋ํฉ์ ์ข ๋ฅ๋ ์นด๋ 1๊ฐ๊ฐ ํฌํจ๋ ์นด๋ํฉ, ์นด๋ 2๊ฐ๊ฐ ํฌํจ๋ ์นด๋ํฉ, ... ์นด๋ N๊ฐ๊ฐ ํฌํจ๋ ์นด๋ํฉ๊ณผ ๊ฐ์ด ์ด N๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
๋ฏผ๊ท๋ ์นด๋์ ๊ฐ์๊ฐ ์ ์ ํฉ์ด๋๋ผ๋ ๊ฐ๊ฒฉ์ด ๋น์ธ๋ฉด ๋์ ๋ฑ๊ธ์ ์นด๋๊ฐ ๋ง์ด ๋ค์ด์์ ๊ฒ์ด๋ผ๋ ๋ฏธ์ ์ ๋ฏฟ๊ณ ์๋ค. ๋ฐ๋ผ์, ๋ฏผ๊ท๋ ๋์ ์ต๋ํ ๋ง์ด ์ง๋ถํด์ ์นด๋ N๊ฐ ๊ตฌ๋งคํ๋ ค๊ณ ํ๋ค. ์นด๋๊ฐ i๊ฐ ํฌํจ๋ ์นด๋ํฉ์ ๊ฐ๊ฒฉ์ Pi์์ด๋ค.
์๋ฅผ ๋ค์ด, ์นด๋ํฉ์ด ์ด 4๊ฐ์ง ์ข ๋ฅ๊ฐ ์๊ณ , P1 = 1, P2 = 5, P3 = 6, P4 = 7์ธ ๊ฒฝ์ฐ์ ๋ฏผ๊ท๊ฐ ์นด๋ 4๊ฐ๋ฅผ ๊ฐ๊ธฐ ์ํด ์ง๋ถํด์ผ ํ๋ ๊ธ์ก์ ์ต๋๊ฐ์ 10์์ด๋ค. 2๊ฐ ๋ค์ด์๋ ์นด๋ํฉ์ 2๋ฒ ์ฌ๋ฉด ๋๋ค.
P1 = 5, P2 = 2, P3 = 8, P4 = 10์ธ ๊ฒฝ์ฐ์๋ ์นด๋๊ฐ 1๊ฐ ๋ค์ด์๋ ์นด๋ํฉ์ 4๋ฒ ์ฌ๋ฉด 20์์ด๊ณ , ์ด ๊ฒฝ์ฐ๊ฐ ๋ฏผ๊ท๊ฐ ์ง๋ถํด์ผ ํ๋ ๊ธ์ก์ ์ต๋๊ฐ์ด๋ค.
๋ง์ง๋ง์ผ๋ก, P1 = 3, P2 = 5, P3 = 15, P4 = 16์ธ ๊ฒฝ์ฐ์๋ 3๊ฐ ๋ค์ด์๋ ์นด๋ํฉ๊ณผ 1๊ฐ ๋ค์ด์๋ ์นด๋ํฉ์ ๊ตฌ๋งคํด 18์์ ์ง๋ถํ๋ ๊ฒ์ด ์ต๋๊ฐ์ด๋ค.
์นด๋ ํฉ์ ๊ฐ๊ฒฉ์ด ์ฃผ์ด์ก์ ๋, N๊ฐ์ ์นด๋๋ฅผ ๊ตฌ๋งคํ๊ธฐ ์ํด ๋ฏผ๊ท๊ฐ ์ง๋ถํด์ผ ํ๋ ๊ธ์ก์ ์ต๋๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. N๊ฐ๋ณด๋ค ๋ง์ ๊ฐ์์ ์นด๋๋ฅผ ์ฐ ๋ค์, ๋๋จธ์ง ์นด๋๋ฅผ ๋ฒ๋ ค์ N๊ฐ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค. ์ฆ, ๊ตฌ๋งคํ ์นด๋ํฉ์ ํฌํจ๋์ด ์๋ ์นด๋ ๊ฐ์์ ํฉ์ N๊ณผ ๊ฐ์์ผ ํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฏผ๊ท๊ฐ ๊ตฌ๋งคํ๋ ค๊ณ ํ๋ ์นด๋์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000)
๋์งธ ์ค์๋ Pi๊ฐ P1๋ถํฐ PN๊น์ง ์์๋๋ก ์ฃผ์ด์ง๋ค. (1 ≤ Pi ≤ 10,000)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฏผ๊ท๊ฐ ์นด๋ N๊ฐ๋ฅผ ๊ฐ๊ธฐ ์ํด ์ง๋ถํด์ผ ํ๋ ๊ธ์ก์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1
4
1 5 6 7
์์ ์ถ๋ ฅ1
10
์์ ์ ๋ ฅ2
5
10 9 8 7 6
์์ ์ถ๋ ฅ2
50
์์ ์ ๋ ฅ3
10
1 1 2 3 5 8 13 21 34 55
์์ ์ถ๋ ฅ3
55
์์ ์ ๋ ฅ4
10
5 10 11 12 13 30 35 40 45 47
์์ ์ถ๋ ฅ4
50
์์ ์ ๋ ฅ5
4
5 2 8 10
์์ ์ถ๋ ฅ5
20
์์ ์ ๋ ฅ6
4
3 5 15 16
์์ ์ถ๋ ฅ6
18
์๊ฐ
๋ฌธ์ ์์ ์๋ก๋ฌ๋ก ๊ธ์จ๋ฅผ ๋จผ์ ๋ณด๊ณ ๋ญ์ง ํ๋๋ฐ ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ์ ๋ณ๋ก ์ค์ํ ๋ด์ฉ์ ์๋์๋ค ใ ใ ใ
i 1 2 3 4
p[i] 1 5 6 7
d[i] : i๊ฐ์ ์นด๋๋ฅผ ๊ตฌ๋งคํ๊ธฐ ์ํด์ ์ง๋ถํด์ผํ๋ ์ต๋ ๊ธ์ก
1. d[1] = 1
1๊ฐ์ ์นด๋๋ก ์นด๋ 1๊ฐ๋ฅผ ๊ตฌ๋งคํ๋ ๊ฒฝ์ฐ p[1]
2. d[2] = d[1] + p[1] , d[2]
1๊ฐ์ ์นด๋๋ก ์นด๋ 2๊ฐ๋ฅผ ๊ตฌ๋งคํ๋ ๊ฒฝ์ฐ p[1] + d[1]
2๊ฐ์ ์นด๋๋ก ์นด๋ 2๊ฐ๋ฅผ ๊ตฌ๋งคํ๋ ๊ฒฝ์ฐ p[2]
3. d[n]
1๊ฐ์ ์นด๋๋ก ์นด๋ n๊ฐ๋ฅผ ๊ตฌ๋งคํ๋ ๊ฒฝ์ฐ p[1] + d[n-1]
2๊ฐ์ ์นด๋๋ก ์นด๋ n๊ฐ๋ฅผ ๊ตฌ๋งคํ๋ ๊ฒฝ์ฐ p[2] + d[n-2]
...
n๊ฐ์ ์นด๋๋ก ์นด๋ n๊ฐ๋ฅผ ๊ตฌ๋งคํ๋ ๊ฒฝ์ฐ p[n]
i, j ์ธ๋ฑ์ค 2๊ฐ๋ฅผ ์ด์ฉํด์ ์ ๊ทผํ๋ ๋ฌธ์ ์๋ค.
์์ฑํ ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int p[10001];
int d[1001];
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for(int i=1; i<=n; i++){
cin >> p[i];
}
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++){
d[i] = max(d[i], d[i-j] + p[j]);
}
}
cout << d[n] << "\n";
return 0;
}
Colored by Color Scripter
|
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ - 2193. ์ด์น์ (0) | 2020.04.02 |
---|---|
[๋ฐฑ์ค] ์๋ฎฌ๋ ์ด์ - 2455. ์ง๋ฅํ ๊ธฐ์ฐจ (0) | 2020.03.31 |
[๋ฐฑ์ค] ์๋ฎฌ๋ ์ด์ - 14503. ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2020.03.23 |
[๋ฐฑ์ค] ๋ฐฑํธ๋ํน - 9207. ํ๊ทธ ์๋ฆฌํ ์ด (0) | 2020.03.23 |
[๋ฐฑ์ค] ์กฐํฉ๋ก - 5557. 1ํ๋ (0) | 2020.03.21 |