알고리즘

[백준(baekjoon)] 피보나치 함수 (C/C++)

Code Bomber 2021. 1. 14. 23:35

문제 링크 : www.acmicpc.net/problem/1003

 

1003번: 피보나치 함수

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

www.acmicpc.net

그렇게 어려운 문제는 아닌 것 같은데 문제 번호가 앞 번호다 보니 정답률이 낮은 것 같다.

 

pair를 써서 first는 0을 출력한 횟수, second는 1을 출력한 횟수로 사용하여 문제를 풀었다.

 

fibonacci 0번째 1번째는 입력해 주고

2번째 부터는 index-1 index-2 위치의 값을 더해주어 먼저 40번째까지 선 계산 후에

입력 값을 받아 출력해 주었다.

#include <iostream>
using namespace std;

pair<int, int> fibonacci[41];

int main() {
	fibonacci[0] = {1, 0};
	fibonacci[1] = {0, 1};
	
	for(int i = 2; i <= 40; i++) {
		fibonacci[i].first = fibonacci[i - 1].first + fibonacci[i - 2].first;
		fibonacci[i].second = fibonacci[i - 1].second + fibonacci[i - 2].second;
	}
	
	int count;
	cin >> count;
	
	for(int testCase = 0; testCase < count; testCase++) {
		int index;
		cin >> index;
		
		cout << fibonacci[index].first << " " << fibonacci[index].second << endl;
	}
}