이문제는 동적 프로그래밍을 하면서 취코테랑 같은 문제라고 생각해서 접근했다가 안 풀려서 상당히 당황 했었지만 내 나름의 동적프로그래밍을 해봤다.. 하지만 이게 가장 효율적인 코드인가는 잘 모르겠다.
내 코드
#include<stdio.h>
int done[41] = { 0 };
int dzero[41] = { 0 };
void fibo(int n)
{
dzero[0] = 1;
dzero[1] = 0;
done[0] = 0;
done[1] = 1;
if (n < 2)
return;
int check = 2;
for (int i = 2; i <= n; i++)
{
if (done[i] == 0 || dzero[i] == 0)
{
check = i;
break;
}
}
for (int i = check; i <= n; i++)
{
dzero[i] = dzero[i - 1] + dzero[i - 2];
done[i] = done[i - 1] + done[i - 2];
}
}
int main()
{
int input;
scanf("%d", &input);
int test;
for (int i = 0; i < input; i++)
{
scanf("%d", &test);
fibo(test);
printf("%d %d\n", dzero[test], done[test]);
}
}
참고 코드
이 코드가 훨씬 더 깔끔하구나 피보나치 함수에서 0이 나온 횟수는 n-1 의 횟수라는걸 몰랐다.
이 글은 코딩 꼬꼬마 시절에 푼 문제를 보관한 글로 네이버에 저장해둔 글을 옮긴 글입니다.
혹시나 참고하시는 부분에 이상한 부분이나 질문이 생긴다면 남겨주시면 친절히 답변 드리겠습니다.
728x90
'알고리즘 기초시절' 카테고리의 다른 글
백준 토마토 성공!! 1068번 BFS(C언어) (0) | 2023.01.04 |
---|---|
백준 트리 1068번 DFS(C언어) (0) | 2023.01.04 |
백준 타일채우기 문제 dp (0) | 2023.01.03 |
백준 마인크래프트 18111번 브루스포스(C언어) (0) | 2023.01.03 |
백준 재귀함수가 뭔가요?17478번(C++) (0) | 2023.01.03 |