정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.
정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.
#include <iostream>
using namespace std;
int d[12] = {1, 1, 2}; //Base case n이 0, 1, 2일때 1, 1, 2
int main(){
int n;
//입력
cin >> n;
for(int i = 0; i < n; i++){
int temp;
//입력
cin >> temp;
//3부터 시작하여 입력 받은 값까지 모든 경우의 수 쌓아올림
for(int j = 3; j <= temp; j++){
d[j] = d[j-1]+d[j-2]+d[j-3]; //전, 전전, 전전전의 값들을 더하면 현재 값이 나온다
}
//출력
cout<<d[temp]<<endl;
}
}