출처: https://bumcrush.tistory.com/182 [맑음때때로 여름]
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
31
32
|
#include <iostream>
using namespace std;
int num;
int dp[11];
void makeSum()
{
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for (int i = 4; i < 11; i++)
{
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
makeSum();
cin >> num;
while (num--)
{
int tmp;
cin >> tmp;
cout << dp[tmp] << "\n";
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
1-1개
1
2-2개
1 1
2
3-4개
1 1 1
1 2
2 1
3
4 -7개
1 1 1 1
1 1 2
1 2 1
2 1 1
2 2
1 3
3 1
5-13개
1 1 1 1 1
1 1 1 2
1 1 2 1
1 2 1 1
2 1 1 1
1 2 2
2 1 2
2 2 1
1 1 3
1 3 1
3 1 1
2 3
3 2
6 --24개
1 1 1 1 1 1
1 1 1 1 2
1 1 1 2 1
1 1 2 1 1
1 2 1 1 1
2 1 1 1 1
1 1 1 3
1 1 3 1
1 3 1 1
3 1 1 1
1 1 2 2
1 2 1 2
2 1 1 2
2 1 2 1
2 2 1 1
1 2 2 1
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
2 2 2
3 3
dp 문제라는 것을 알고 풀다보니 그냥 쭉 써놓고 점화식을 찾아서 풀었다. dp[i]=dp[i-1]+dp[i-2]+dp[i-3](i>=4)
이 문제는 보고 dp 문제라는 것을 쉽게 알아차릴 수 있을 것 같은데 다른 dp문제를 봤을 때 바로 dp문제임을 알아채고 이런 식으로 풀어낼 수 있을지 조금 걱정이다.
백준 11726 2×n 타일링(dynamic programming) (0) | 2020.04.17 |
---|---|
백준 1003 피보나치 함수(dynamic programming) (0) | 2020.04.17 |
백준 1065 한수(brute force) (0) | 2020.04.14 |
백준 14501 퇴사(brute force) (0) | 2020.04.14 |
백준 2309 일곱난쟁이(brute force) (0) | 2020.04.14 |
댓글 영역