1,2,3 더하기(백준)

이문제를 DP로 풀어야 한다고 판단하는 근거 ->
1. n번째 방법은 m[n-1]+m[n-2]+m[n-3] = m[n]점화식을 세우는 것과
2. m[1]=1, m[2]=2, m[3]=4 값을 가지고
시작한다.

#include <vector>
#include <queue>
#include <iostream>

using namespace std;

int n;

int method()
{

	int dp[11] = { 0, };
	
	dp[1] = 1;
	dp[2] = 2;
	dp[3] = 4;


	for (int n = 4; n < 11; n++)
	{
		dp[n] = dp[n - 1] + dp[n - 2] + dp[n - 3];
	}
	return dp[n];
}

int main()
{
	int m;
	cin >> m;
	int dp[11] = { 0, };
	


	for (int i = 0; i < m; i++)
	{
		cin >> n;
		cout << method() << endl;
	}

	return 0;

}

좋은 웹페이지 즐겨찾기