์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 30 |
- ํ๋ก๊ทธ๋๋จธ์ค
- skala1๊ธฐ
- DP
- ์ค๋ธ์
- ๋จธ์ง์ํธ
- LIS
- SQL
- ํ์ด์ฌ
- ๊ทธ๋ฆฌ๋
- ์ ๋ ฌ
- ๊น์ด์ฐ์ ํ์
- ์ฐ์ ์์ํ
- BFS
- db
- ๋ฐฑ์ค
- ์์ํ์
- ๋์ ํฉ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- DFS
- ๋๋น์ฐ์ ํ์
- ๊ทธ๋ํํ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๊ทธ๋ํ
- ์ํ
- ๋ณํฉ์ ๋ ฌ
- ์๊ณ ๋ฆฌ์ฆ
- skala
- ๋์ ๊ณํ๋ฒ
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ๊ตฌํ
- Today
- Total
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๋ฐฑ์ค] 9461๋ฒ: ํ๋๋ฐ ์์ด - C++ ๋ณธ๋ฌธ
๋ฌธ์
์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๊ฐํ์ด ๋์ ๋ชจ์์ผ๋ก ๋์ฌ์ ธ ์๋ค. ์ฒซ ์ผ๊ฐํ์ ์ ์ผ๊ฐํ์ผ๋ก ๋ณ์ ๊ธธ์ด๋ 1์ด๋ค. ๊ทธ ๋ค์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ ์ผ๊ฐํ์ ๊ณ์ ์ถ๊ฐํ๋ค. ๋์ ์์ ๊ฐ์ฅ ๊ธด ๋ณ์ ๊ธธ์ด๋ฅผ k๋ผ ํ์ ๋, ๊ทธ ๋ณ์ ๊ธธ์ด๊ฐ k์ธ ์ ์ผ๊ฐํ์ ์ถ๊ฐํ๋ค.
ํ๋๋ฐ ์์ด P(N)์ ๋์ ์ ์๋ ์ ์ผ๊ฐํ์ ๋ณ์ ๊ธธ์ด์ด๋ค. P(1)๋ถํฐ P(10)๊น์ง ์ฒซ 10๊ฐ ์ซ์๋ 1, 1, 1, 2, 2, 3, 4, 5, 7, 9์ด๋ค.
N์ด ์ฃผ์ด์ก์ ๋, P(N)์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 100)
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค P(N)์ ์ถ๋ ฅํ๋ค.
DP๋ฅผ ์ด์ฉํ์ฌ ํ ์ ์๋ ๋ฌธ์ .
์๊ฐ๋ณด๋ค ๋จ์ํ๊ฒ ๊ท์น์ ๋ฐ๊ฒฌํ ์ ์์ด ์ด๋ ต์ง ์์ ๋ฌธ์ ๋ค. ๊ทธ๋ฆผ์ ์ํ๋ฉด 1๋ถํฐ 11๊น์ง์ ํ๋๋ฐ ์์ด์ ๋ค์๊ณผ ๊ฐ๋ค.
P(1) = 1
P(2) = 1
P(3) = 1
P(4) = 2
P(5) = 2
P(6) = 1 + 2 = 3
P(7) = 1 + 3 = 4
P(8) = 1 + 4 = 5
P(9) = 2 + 5 = 7
P(10) = 2 + 7 = 9
P(11) = 3 + 9 = 12
...
์๋ฌด๋ฐ ๊ท์น ์์ด ๋์ด๋๋ 1~5๋ฒ์งธ ๊น์ง๋ฅผ ์ ์ธํ๊ณ , 6๋ฒ์งธ๋ถํฐ ๊ท์น์ ์์ธํ ์ดํด๋ณด๋ฉด ์์ ์ 5๋ฒ์งธ ์ ์ซ์์ ๋ฐ๋ก ์ ์ซ์๋ฅผ ๋ํ๋ฉด ์๊ธฐ ์์ ์ด ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ฆ, P(6) = P(1) + P(5), ... , P(10) = P(5) + P(9), P(11) = P(6) + P(10) , ... ๋ฑ๊ณผ ๊ฐ์ด ํํํ ์ ์๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ์ ํ์์ผ๋ก ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
D[i] = D[i - 1] + D[i - 5] (i > 5)
1๋ฒ์งธ๋ถํฐ 5๋ฒ์งธ๊น์ง ์๋ ์๋ฌด ๊ท์น์ด ์๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
์ฝ๋
#include <cstdio>
#include <vector>
#define MAX 101
using namespace std;
long DP(int num);
vector<long> memo(MAX, 0);
int main(void) {
int t;
scanf("%d", &t);
for(int i = 0; i < t; i++) {
int n;
scanf("%d", &n);
printf("%ld\n", DP(n));
}
return 0;
}
long DP(int num) {
memo[1] = memo[2] = memo[3] = 1;
memo[4] = memo[5] = 2;
for(int i = 6; i <= num; i++) {
memo[i] = memo[i - 1] + memo[i - 5];
}
return memo[num];
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11052๋ฒ: ์นด๋ ๊ตฌ๋งคํ๊ธฐ - C++ (0) | 2021.08.03 |
---|---|
[๋ฐฑ์ค] 2225๋ฒ: ํฉ๋ถํด - C++ (0) | 2021.08.02 |
[๋ฐฑ์ค] 1699๋ฒ: ์ ๊ณฑ์์ ํฉ - C++ (0) | 2021.07.30 |
[๋ฐฑ์ค] 11054๋ฒ: ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด - C++ (0) | 2021.07.28 |
[๋ฐฑ์ค] 9465๋ฒ: ์คํฐ์ปค - C++ (0) | 2021.07.27 |