[백준] 1003번 피보나치 함수 (C++)

seul·2020년 4월 10일
0

백준

목록 보기
5/7

문제

  • 피보나치 함수 문제의 변형

풀이

  • pair를 이용해서 pair의 first엔 0의 횟수, second엔 1의 횟수를 저장
  • 나머지는 피보나치 함수 구현과 같음
#include <iostream>
#include <utility>
using namespace std;

pair<int, int> v[41];

pair<int, int> getCount(int n) {
    v[0] = pair<int, int>(1, 0);
    v[1] = pair<int, int>(0, 1);

    if(n == 0 || n == 1) {
        return v[n];
    }

    if(v[n].first!=0 && v[n].second!=0) return v[n];
    else { 
        v[n] = make_pair(getCount(n-1).first + getCount(n-2).first, 
        getCount(n-1).second + getCount(n-2).second);
    }
    return v[n];
}


int main() 
{
    getCount(40);
    int N;
    cin>>N;
   // vector<int> temp;
    for(int i=0;i<N;i++) {
        int n;
        cin>>n;
        cout<<v[n].first<<" "<<v[n].second<<"\n";
    }
    return 0;
}
profile
무한삽질로그

0개의 댓글