반응형
zeros
배열과 ones
배열을 활용하여 각 숫자에서 0과 1이 나온 횟수를 메모이제이션으로 저장한다.
#include <iostream>
#include <vector>
using namespace std;
int zeros[41], ones[41];
int z(int n) {
if(zeros[n]) return zeros[n];
else if(n==0) return zeros[n]=1;
else if(n==1) return zeros[n]=0;
else return zeros[n]=z(n-1)+z(n-2);
}
int o(int n) {
if(ones[n]) return ones[n];
else if(n==0) return ones[n]=0;
else if(n==1) return ones[n]=1;
else return ones[n]=o(n-1)+o(n-2);
}
int main() {
int T;
cin >> T;
for(int i=0; i<T; i++) {
int N;
cin >> N;
cout << z(N) << " " << o(N) << endl;
}
}
'PS' 카테고리의 다른 글
[PS] 백준 4375번 - 1 (0) | 2024.07.09 |
---|---|
[PS] 백준 15966번 - 군계일학 (0) | 2023.05.22 |
[PS] 백준 11053번 - 가장 긴 증가하는 부분 수열 (0) | 2023.05.21 |
[PS] 백준 9095번 - 1, 2, 3 더하기 (0) | 2023.05.18 |
[PS] 백준 1463번 - 1로 만들기 (0) | 2023.05.17 |