백준 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;
}

 

반응형