문제는 다음과 같습니다.
드디어 중간고사가 끝났습니다! (사실 어제^^)
이제 조금 맘놓고 백준을 풀 수 있어서 행복함니다 ㅠㅠㅠㅠ
첫 DP 문제는 간단합니다!
0과 1의 초기 조건이 주어져 있고,
간단히 다이나믹 프로그래밍의 bottom-up 방식을 이용하면 됩니다.
2차원 배열 dp를 선언하였고,
배열 dp는 다음을 의미합니다.
dp[N][i]: fibonacci(N)을 수행하였을 때 i가 출력된 횟수
전체 코드는 다음과 같습니다🙆🏻♀️
#include <iostream>
#include <vector>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int dp[41][41];
dp[0][0]=1; dp[0][1]=0; dp[1][0]=0; dp[1][1]=1; // 초기 조건
for(int i=2; i<=40; i++){ // bottom-up 이용
dp[i][0] = (dp[i-1][0] + dp[i-2][0]);
dp[i][1] = (dp[i-1][1] + dp[i-2][1]);
}
int n; vector<int> v;
cin>>n;
for(int i=0; i<n; i++){
int tmp; cin>>tmp; v.push_back(tmp);
}
for(int i=0; i<v.size(); i++){
cout<<dp[v[i]][0]<<" "<<dp[v[i]][1]<<"\n";
}
return 0;
}