백준 10870 피보나치수5 문제풀이

2023. 4. 18. 22:28카테고리 없음

▶문제

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그다음 2번째부터는 바로 앞 두 피보나치 수의 합이 된다.

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.

n=17일때 까지 피보나치 수를 써보면 다음과 같다.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597

n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.

 

요악하자면

1 + 2 + 3 + 5 + (8+13)과 같이 바로 앞에 두 자릿수를 n번 반복해 출력하는 프로그램입니다.

괄호와 같이 8+13이니까 다음 더하는 수는 21이 되겠네요

 

 

저는 아래와 같은 코드를 작성하여 문제를 풀었습니다.

0과 1부터 시작하는 수여서 0일때와 1일 때의 조건문을 넣어줬고 2 이상의 수는 단순 반복을 넣어 코드를 작성했습니다.

#include<stdio.h>
int main(void){
    
    int a, b=0,c=1,d=0; //변수 초기화
    scanf("%d",&a); //수 입력 받기
    if(a==0){ //만약 0이라면 0만 출력 (앞에 숫자가 없기 때문)
        printf("%d",b);
    }
    else if(a==1){ //만약 1 이라면 1만 출력 (앞에 숫자가 없기 때문)
        printf("%d",c);
    }
    else if(a>=2){ //만약 입력받은 값이 2이상이라면
        for(int i=0; i<a;i++){ 0부터 입력받은 수까지 반복
            b=c; //b=c니까 b=1이 됨
            c=d; //
            d=b+c; //이렇게 계속해서 b+c를 a만큼 해주면 원하는 값이 나옵니다.
        }
        printf("%d",d);
    }
    
    return 0;
}