# 생각
dp를 이용하여 해결할 수 있다
테이블 정의
fibo[i][k] = 숫자 i가 0 또는 1을 호출한 횟수
점화식
fibo[i][k] = fibo[i-1][k] + fibo[i-2][k]
초기값
fibo[0][0] = fibo[1][1] = 1
# 전체 코드
#include <bits/stdc++.h>
using namespace std;
int fibo(int n, int index)
{
int f[44][2] = {};
f[0][0] = f[1][1] = 1;
for (int i = 2; i <= n; i++)
{
f[i][0] = f[i - 1][0] + f[i - 2][0];
f[i][1] = f[i - 1][1] + f[i - 2][1];
}
return f[n][index];
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int TC;
cin >> TC;
while (TC--)
{
int n;
cin >> n;
cout << fibo(n, 0) << ' ' << fibo(n, 1) << '\n';
}
}
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2606_바이러스 with cpp (0) | 2022.03.07 |
---|---|
[BOJ] 1260_DFS와 BFS with cpp (0) | 2022.03.06 |
[BOJ] 12852_1로 만들기 2 with cpp (0) | 2022.03.04 |
[BOJ] 11659_구간 합 구하기 4 with cpp (0) | 2022.03.04 |
[BOJ] 11726_2×n 타일링 with cpp (0) | 2022.03.04 |