본문 바로가기

백준 연습

백준 2748 C언어

 

이 문제는 피보나치 수열의 n번째 수를 구해야한다.

단순하게 재귀함수로 구하면 알고리즘의 속도가 느리기 때문에 피보나치 수열의 계산결과를 저장할 배열을 사용했다.

#include <stdio.h>
#include <stdlib.h>

long long int *Arr;

void Fibo(int n) {
	Arr[n] = Arr[n - 1] + Arr[n - 2];
}

int main() {
	int n;

	scanf("%d", &n);
	Arr = (long long int*)malloc(sizeof(long long int)*(n + 1));

	Arr[0] = 0;
	Arr[1] = 1;

	for (int i = 2; i <= n; i++)
		Fibo(i);

	printf("%lld\n", Arr[n]);
	free(Arr);
	Arr = NULL;

	return 0;
}

int 자료형의 크기 안에 저장하려하면 오버플로우가 났다.

때문에 long long int형으로 동적  포인터 할당 해서 문제를 해결했다.

'백준 연습' 카테고리의 다른 글

백준 15651번 C언어  (0) 2020.08.16
백준 15650 C언어  (0) 2020.08.16
백준 15649 C언어  (0) 2020.08.16
백준 9461 C언어  (0) 2020.08.15
백준 1003번 C언어  (0) 2020.08.14