개인 서재..*/문제풀이
백준 1003번 문제. 피보나치
낭만붕어빵
2017. 6. 5. 10:20
반응형
[Point] 문제 예제에 주어진 코드를 잘 활용하여 fib(1)과 fib(0)이 나올 때 카운트만 잘 해주면 된다.
쉬운 문제.
예제로 주어진 코드를 조금 수정하면 된다.
*변수 설명*
cnt_0 : fib(0)이 몇 번 나오는지
cnt_1 : fib(1)이 몇 번 나오는지
T : 테스트 케이스
N : 입력
*알고리즘 설명*
재귀함수 int fib(int n) 을 이용하여 n이 1과 0일 때는 카운트 횟수를 증가시켜주고
그 외의 경우에는 fib(n-1)과 fib(n-2)를 호출해주면 된다.
그림을 그려보면 이진트리처럼 내려가게 됨.
별 다른 설명은 더 필요 없을듯하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <stdio.h> int cnt_0,cnt_1; void fib(int n){ if(n==0){ cnt_0++; } else if(n==1){ cnt_1++; } else{ fib(n-1); fib(n-2); } } int main(){ int T,N,i; scanf("%d",&T); for(i=0;i<T;i++){ scanf("%d",&N); cnt_0=0; cnt_1=0; fib(N); printf("%d %d\n",cnt_0,cnt_1); } return 0; } | cs |
반응형