티스토리 뷰

# 출처 : https://www.acmicpc.net/problem/1003




처음에 단순하게 count 변수 두개를 선언해서 0과 1을 호출하는 횟수를 셌는데 시간초과가 났다.

따라서 i번째 수의 0과 1의 호출 횟수는 i-1번째의 0과 1, i-2번째의 0과 1 각각의 횟수의 합과 같은 규칙을 찾아

처음부터 배열에 담아두는 형식으로 풀었다.




# 풀이


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
#include <iostream>
 
using namespace std;
 
int T, N;
int DP[42][2];
 
int main()
{
    ios::sync_with_stdio(false); 
    cin.tie(NULL); 
    cout.tie(NULL);
 
    DP[0][0= 1; DP[0][1= 0;
    DP[1][0= 0; DP[1][1= 1;
    for (int i = 2; i < 42++i)
    {
        DP[i][0= DP[i - 1][0+ DP[i - 2][0];
        DP[i][1= DP[i - 1][1+ DP[i - 2][1];
    }
 
    cin >> T;
    for (int i = 0; i < T; ++i)
    {
        cin >> N;
        cout << DP[N][0<< " " << DP[N][1<< '\n';
    }
    return 0;
}
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
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
글 보관함