본문 바로가기

알고리즘 문제

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

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

 

1003번: 피보나치 함수

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

www.acmicpc.net

기본적인 구성은 피보나치 함수와 같은데, dp를 이차원 배열로 선언해서 dp[i][0]에는 0의 개수, dp[i][1]에는 1의 개수를 저장해서 돌리면 된다. 매우 쉬움.


#include <cstdio>
int main(void){
	int T, a, dp[41][2]{{1,0},{0,1},};
	for(int i=2; i<41; i++){
		dp[i][0]=dp[i-1][0]+dp[i-2][0];
		dp[i][1]=dp[i-1][1]+dp[i-2][1];
	}
	scanf("%d",&T);
	for(int j=0; j<T; j++){
		scanf("%d",&a);
		printf("%d %d\n",dp[a][0],dp[a][1]);
	}
}