본문 바로가기
algorithm/acmicpc

[백준 알고리즘] 1003번 피보나치 (java)

by 무대포 개발자 2018. 1. 26.
728x90
반응형

[백준 알고리즘] 1003번 피보나치 (java)


1. 피드백

1.1 2번은 캐시 사용해서 푼 것 / 3번은 캐시 사용하지 않고 푼 것


2. Source (캐시 사용)

package acmicpc;

import java.util.Scanner;

/**
 * @author lee
 *
 */

public class Num1003UsingCache
{
    private static int cache[][] = new int[41][2];
    public static void main(String [] args)
    {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        int n = 0;
        for (int i = 0 ; i < T ; i++)
        {
            n = sc.nextInt();
            fibonacci(n);
            print(n);
        }
    }

    public static void print(int n)
    {
        System.out.println(cache[n][0] + " " + cache[n][1]);
    }

    public static int[] fibonacci(int n)
    {
        int result[];
        if (cache[n][0] != 0 || cache[n][1] != 0)
        {
            return cache[n];
        }

        if (n == 0)
        {
            cache[n][0] += 1;
            return cache[n];
        }
        else if (n == 1)
        {
            cache[n][1] += 1;
            return cache[n];
        }
        else 
        {
            result = fibonacci(n-1);
            cache[n][0] += result[0]; cache[n][1] += result[1];
            result = fibonacci(n-2);
            cache[n][0] += result[0]; cache[n][1] += result[1];
            return cache[n];
        }
    }
}

3.Source (캐시 사용 X )

package acmicpc;

import java.util.Scanner;

/**
 * @author lee
 *
 */

public class Num1003
{
    public static void main(String [] args)
    {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        int n = 0;
        int res[][] = new int[T][2];
        for (int i = 0 ; i < T ; i++)
        {
            n = sc.nextInt();
            fibonacci(n, res[i]);
        }

        for (int i = 0 ; i < T ; i++)
        {
            System.out.println(res[i][0] + " " + res[i][1]);
        }
    }

    public static void fibonacci(int n, int res[])
    {
        if (n == 0) res[0] += 1;
        else if (n == 1) res[1] += 1;
        else
        {
            fibonacci(n-1, res);
            fibonacci(n-2, res);
        }
    }
}

댓글