다시 또... 삼성 코딩테스트 준비할려고 문제를 풀기 시작했다. 이전에는 DP관련해서 문제를 많이 풀어보지 않았는데

이번에는 dfs bfs말고도 준비해볼려고 dp를 풀고있다.

이 문제는 처음에는 어떻게 풀어야지... 생각하다가 빡더킹의 강의를 듣고 쉽게 풀었다... 예제 수준의 문제지만 나에게는 아직 어렵다.

나는 숫자를 입력받을때마다 계산하는것이 효율적이라고 은연중에 생각하고 있었는데 미리 계산해서 다 정리해놓고 입력받을때마다 출력하는것이 효율적이라고 말한다.

 

#include <iostream>

using namespace std;

int dp[100];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int T;
	cin >> T;
	dp[1] = 1;
	dp[2] = 2;
	dp[3] = 4;
	for (int i = 4; i <= 11; i++) {
		dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
	}
	while (T--) {
		int n;
		cin >> n;
		
		
		cout << dp[n] << endl;
	}

	return 0;
}

+ Recent posts