문제
리뷰
정수 1 부터 "1, 2, 3 의 합으로 나타내는 방법의 수" 를 전부 적어봤다.
정수 i의 경우, 방법의 수를 D[i] 에 저장한다.
D[1] = 1
D[2] = 2
D[3] = 4
D[4] = 7
D[5] = 13
이렇게 되니까, 7 = 4 + 2 + 1 이었고, 13 = 7 + 4 + 2 였다.
[ 점화식 ]
D[i] = D[i-1] + D[i-2] + D[i-3]
코드
#include <stdio.h>
using namespace std;
int arr[12];
int sum_case(int num){
int i = 0;
for(i = 4; i <= num; i++){
arr[i] = arr[i-1] + arr[i-2] + arr[i-3];
}
return arr[num];
}
int main(void){
freopen("input.txt", "rt", stdin);
int test_case = 0, num = 0;
scanf("%d", &test_case);
arr[1] = 1;
arr[2] = 2;
arr[3] = 4;
while(test_case--){
scanf("%d", &num);
printf("%d\n", sum_case(num));
}
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
1,2,3 더하기5 백준 15990번 c++ (1) | 2020.08.15 |
---|---|
카드구매하기2 백준 16194번 (0) | 2020.08.15 |
이친수 백준 2193 (0) | 2020.08.14 |
오르막 수 백준 11057 (0) | 2020.08.14 |
쉬운 계단 수 백준 10844 (0) | 2020.08.14 |