백준 algorithm
백준 9095번 -1,2,3더하기
cosmohoo
2019. 8. 29. 21:27
반응형
오랜만에 푸는 백준 문제라 푸는데 시간이 걸렸다.
점화식 하나만 세우면 쉬는 문제이다.
f(n)=f(n-1)+f(n-2)+f(n-3)
위의 식을 사용하면 1,2,3을 이용해 더하는 가지의 수를 더할 수 있다.
본인은 기본적으로 벡터를 사용하여
1,2,3을 이용하여 1을 만들 수 있는 가지의 수 = 1
1,2,3을 이용하여 2을 만들 수 있는 가지의 수 = 2
1,2,3을 이용하여 3을 만들 수 있는 가지의 수 = 4
를 벡터에 두고서 제한값이 11까지의 값을 계산하였다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;//반복할 횟수 변수
cin >> n;
vector<int> v(12);
vector<int> num;
v[1] = 1;
v[2] = 2;
v[3] = 4;//v[n]을 만들수 있는 숫자 갯수
for (int i = 4; i < 12; i++)
{
v[i] = v[i - 1] + v[i - 2] + v[i - 3];
//이 문제를 풀 수 있는 점화식
}
for (int j = 0; j < n; j++)
{
int n;
cin >> n;
num.push_back(n);
}
for (int k = 0; k < n; k++)
{
cout << v[num[k]];
cout << endl;
}
return 0;
}
반응형