[백준/C++]1003번_피보나치 함수

이수진·2022년 4월 27일
0
post-custom-banner

문제는 다음과 같습니다.

드디어 중간고사가 끝났습니다! (사실 어제^^)
이제 조금 맘놓고 백준을 풀 수 있어서 행복함니다 ㅠㅠㅠㅠ

첫 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;
}

profile
꾸준히, 열심히, 그리고 잘하자
post-custom-banner

0개의 댓글