코스모스 공작소

백준 1003번 피보나치 함수[성공] 본문

프로그래밍/알고리즘

백준 1003번 피보나치 함수[성공]

cosmos_studio_ 2019. 11. 29. 19:44
반응형

백준 1003번 피보나치 함수

https://www.acmicpc.net/problem/1003

 

1003번: 피보나치 함수

각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 

f(0) 과 f(1)의 호출 횟수를 출력하면 된다.

목표 수까지 저장된 값들을 다 더해주면된다.

#include <iostream>
#include<vector>

using namespace std;

vector<int> zero;
vector<int> one;

void fibonacci(int n) {
    for(int i=3;i<=n;i++){
		zero.push_back(zero[i-1] + zero[i-2]);
		one.push_back(one[i-1] + one[i-2]);
	}
}

int main(int argc, char* argv[]) {
	
	int num;
	cin>>num;
	
	vector<int> list;
	int temp;
	int max_= 0;
	for(int i=0;i<num;i++){
		cin>>temp;
		list.push_back(temp);
		if(max_<=temp){
			max_ = temp;
		}
	}
	
	zero.push_back(1);
	one.push_back(0);
	
	zero.push_back(0);
	one.push_back(1);
	
	zero.push_back(1);
	one.push_back(1);
	
	
	fibonacci(max_);
	
	for(int i=0;i<num;i++){
		cout<<zero[list[i]]<<" "<<one[list[i]]<<endl;
	}
	
	return 0;
}

기존 피보나치처럼 다 재귀로 호출하는 것이 아닌 이미 구해진 값을 다른 곳에 저장하여 사용하면 되는 문제

 

반응형
Comments