문제
https://www.acmicpc.net/problem/1003
소스
#include <iostream>
using namespace std;
int cnt[41][2];
void fibonacci(int n) {
cnt[0][0] = 1; cnt[0][1] = 0;
cnt[1][0] = 0; cnt[1][1] = 1;
for (int i = 2; i <= n; i++) {
cnt[i][0] = cnt[i - 1][0] + cnt[i - 2][0];
cnt[i][1] = cnt[i - 1][1] + cnt[i - 2][1];
}
}
int main(void) {
int k;
cin >> k;
for (int i = 0; i < k; i++) {
int n;
cin >> n;
fibonacci(n);
cout << cnt[n][0] << " " << cnt[n][1] <<endl;
}
return 0;
}
1. 이차원배열 cnt를 선언한다 : cnt[n][0] 은 숫자 n의 0 호출 횟수이고, cnt[n][1]은 n의 1 호출 횟수.
2. 문제에 나와있는 재귀 코드를 그대로 사용하고 n==0일때와 1일때 각각 카운트 해주면 시간초과 발생! (이 이유에 대해서는 아래 참고에 있는 글을 보면 좋을 것 같다!)
참고
2020/02/20 - [IT/자료구조, 알고리즘] - [알고리즘] 동적 프로그래밍, 다이나믹 프로그래밍, DP :: seoftware
'개인 공부 > 코딩테스트' 카테고리의 다른 글
[C++][백준 2579][다이나믹 프로그래밍] 계단 오르기 :: seoftware (0) | 2020.02.20 |
---|---|
[C++][백준 1463][다이나믹 프로그래밍] 1로 만들기 :: seoftware (0) | 2020.02.20 |
[C++][백준 2667][BFS DFS] 단지번호 붙이기 :: seoftware (0) | 2020.02.19 |
[C++][백준 1260][BFS, DFS] DFS와 BFS :: seoftware (0) | 2020.02.19 |
[C++][백준 2941][문자열 처리] 크로아티아 알파벳 :: seoftware (0) | 2020.02.16 |
댓글