[백준 1003] 피보나치 함수 C언어

2024. 3. 12. 08:03코딩테스트/백준

문제

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

 

1003번: 피보나치 함수

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

www.acmicpc.net

코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
	int n, k;
	int save[41][2] = {0};

	scanf("%d", &n);

	for (int i = 0; i <= 40; i++) { // 값 넣기
		if (i == 0) {
			save[i][0] = 1;
			save[i][1] = 0;
		}
		else if (i == 1) {
			save[i][0] = 0;
			save[i][1] = 1;
		}
		else if (i == 2) {
			save[i][0] = 1;
			save[i][1] = 1;
		}
		else {
			save[i][0] = save[i - 1][0] + save[i - 2][0];
			save[i][1] = save[i - 1][1] + save[i - 2][1];
		}
	}

	for (int i = 1; i <= n; i++) { // 출력
		scanf("%d", &k);
		printf("%d %d\n", save[k][0], save[k][1]);
	}
}

유의할 점

재귀로 풀면 안 풀림.

아이디어

f(5) = f(4) + f(3)

이므로

f(0) f(1) f(2)만 초기값 저장해두고 반복문 돌리기

'코딩테스트 > 백준' 카테고리의 다른 글

[백준 - 10816] 숫자 카드 2  (1) 2024.09.02
[백준 1764] 듣보잡  (1) 2024.03.17
[백준 10773] 제로  (0) 2024.03.08
[백준 2108] 통계학  (1) 2024.02.08
[백준 7568] 덩치  (0) 2024.02.07