Algorithm/BOJ
[c++][BOJ][9095] 1, 2, 3 더하기
kim-hasa
2022. 2. 28. 18:09
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
특정 숫자를 1, 2, 3 으로 더해서 만드는 문제입니다.
이전 타일 문제랑 비슷하게 , n번째 수를 만드는 것은
n - 1 번째 수에 1을 더한 경우 ,
n - 2 번째 수에 2를 더한 경우,
n - 3 번째 수에 3을 더한 경우
3가지로 나눌 수 있습니다.
즉, n번째 수는 (n - 1) + (n - 2) + (n - 3) 가지 경우의 수가 나옵니다.
#include <iostream>
using namespace std;
int main(){
int testcase;
cin >> testcase;
for(int i=0; i<testcase; i++){
int n;
cin >> n;
int arr[20] = {0};
arr[1] = 1;
arr[2] = 2;
arr[3] = 4;
int index = 4;
while(index <= n){
arr[index] = arr[index-1] + arr[index-2] + arr[index-3];
index++;
}
cout << arr[n] << '\n';
}
}