728x90
반응형
https://www.acmicpc.net/problem/1003
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
34
|
#include <stdio.h>
int main() {
int t;
scanf("%d", &t);
int fibo[41][2];
fibo[0][0] = 1;
fibo[0][1] = 0;
fibo[1][0] = 0;
fibo[1][1] = 1;
for (int i = 2; i < 41; i++) {
fibo[i][0] = fibo[i - 1][0] + fibo[i - 2][0];//0이 출력된
fibo[i][1] = fibo[i - 1][1] + fibo[i - 2][1];//1이 출력된
}
for (int i = 0; i < t; i++) {
int num;
scanf("%d", &num);
printf("%d ", fibo[num][0]);
printf("%d\n", fibo[num][1]);
}
}
|
cs |
처음에는 구조체를 사용해서 풀어볼까라는 생각이 들었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
struct count{
int cnt1;
int cnt2;
}
struct count c[41]; int fibo(n){
if(n==0){
c[n].cnt1++;
return 0;
}
else if(n==1){
c[n].cnt2++;
return 1;
}else{
return fibo(n-1)+fibo(n-2);
}
}
|
cs |
이런식으로 말이다! 근데 이렇게 하면 우선 구조체 배열을 전역변수 선언해줘야 하는데 이게 main함수에서 먹히는 느낌이 들지 않았다. 이걸 전역변수로 어떻게 써줘야할지 몰라서 우선 포기했고
사실 더 큰 문제는 시간초과이다. 저렇게 재귀로 돌려주면 시간을 무지 잡아먹는다.
그래서 결국 다시 dp로 돌아왔다 ㅋㅋㅋ
dp[41][2]를 만들어서
dp[n][0] --> 0을 출력한 횟수
dp[n][1] --> 1을 출력한 횟수로 간단히 해결할 수 있었다.
728x90
반응형
'C > 백준' 카테고리의 다른 글
[C 백준] 실버 5/ 1094번 막대기 (0) | 2022.03.10 |
---|
댓글