콘텐츠로 건너뛰기
» Posts » [C#]백준 1003번 ‘피보나치’ 문제 풀기

[C#]백준 1003번 ‘피보나치’ 문제 풀기

피보나치 함수를 그대로 C#으로 바꿔서 풀었더니 바로 시간초과가 나왔다

역시.. 재귀함수로 이렇게 쉽게 갈리가 없지

0과 1이 출력되는 횟수만 구하면 되므로

횟수를 각 숫자마다 저장할 배열을 만들고

0을 가지고 있을 갯수 : i = (i-1) + (i-2)

1을 가지고 있을 갯수 : i = (i-1) + (i-2)

를 각각 출력하면 된다.

class Fibonacci {
static void Main(String[] args)
{
    int testcase = int.Parse(Console.ReadLine());
    while (testcase > 0)
    {
        int[,] fiboArray = new int[40+1, 1+1]; // 최대 정수가 40이므로 +1
        fiboArray[0, 0] = 1; // ,0 의 갯수
        fiboArray[1, 1] = 1; // ,1 의 갯수
        int testitem = int.Parse(Console.ReadLine());

        for (int i = 2; i <= testitem; i++) {
            fiboArray[i, 0] = fiboArray[i - 1, 0] + fiboArray[i - 2, 0];
            fiboArray[i, 1] = fiboArray[i - 1, 1] + fiboArray[i - 2, 1];
        }
        Console.WriteLine("{0} {1}", fiboArray[testitem,0] , fiboArray[testitem,1]);
        testcase -= 1;
    }
}
}

재귀로 날먹 하려다 시간초과 한대 맞고 해결

[C#]백준 1002번 ‘터렛’ 문제 풀기 – 개발자의 작고 소중한 일기장 (coldyj.com)