본문 바로가기
algorithm/DP

[백준/1003] 피보나치 함수

by blogsy 2020. 4. 3.

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

 

1003번: 피보나치 함수

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

www.acmicpc.net

#include <iostream>
using namespace std;

int z = 0;
int one = 0;
int zo[41][2];
int arr[41];

long long f(int n) {
	if (n == 0) {
		return arr[0];
	}
	else if (n == 1) {
		return arr[1];
	}
	if (arr[n] != -1) {
		return arr[n];
	}
	else {
		arr[n] = f(n - 2) + f(n - 1);
		zo[n][0] = zo[n - 2][0] + zo[n - 1][0];
		zo[n][1] = zo[n - 2][1] + zo[n - 1][1];
		return arr[n];
	}

}

int main() {
	int t = 0;
	cin >> t;

	fill_n(arr, 41, -1);
	arr[0] = 0;
	arr[1] = 1;
	zo[0][0] = 1;
	zo[0][1] = 0;
	zo[1][0] = 0;
	zo[1][1] = 1;

	for (int i = 0; i < t; i++) {
		int n;
		cin >> n;
		f(n);
		cout << zo[n][0] << ' ' << zo[n][1] << '\n';
	}
	return 0;
}

'algorithm > DP' 카테고리의 다른 글

[프로그래머스] 2 * n 타일링  (0) 2020.08.24
[백준/9461] 파도반 수열  (0) 2020.04.03
[백준/2748] 피보나치 수 2  (0) 2020.04.03

댓글