Algorithm/Baekjoon

[백준] 10870번 : 피보나치 수 5 - Java

unknownomad 2022. 4. 5. 19:13

https://www.acmicpc.net/problem/10870

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net



풀이

1. Scanner + 재귀함수

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
 
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
        System.out.println(fibonacci(N));
    }
 
    //피보나치 함수
    static int fibonacci(int N) {
        if (N == 0)	{
            return 0;
        }
        if (N == 1)	{
            return 1;
        }
        return fibonacci(N - 1) + fibonacci(N - 2);
    }
}

 

2. BufferedReader + 재귀함수

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
    public static void main(String[] args) throws IOException {
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        System.out.println(fibonacci(N));
    }
 
    //피보나치 함수
    static int fibonacci(int N) {
        if (N == 0)	{
            return 0;
        }
        if (N == 1)	{
            return 1;
        }
        return fibonacci(N - 1) + fibonacci(N - 2);
    }
}

 

3. Scanner + 배열

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
 
        //F(0)부터 시작 ➡ N + 1 크기로 생성
        int[] fibonacci = new int[N + 1];
 
        for(int i = 0; i < fibonacci.length; i++) {
            /*
            fibonacci[0], fibonacci[1] 각각 값 초기화하지 않을 시
            index에 음수값 들어가 에러 발생
            */
            if(i == 0) {
                fibonacci[0] = 0;
            }
            else if(i == 1) {
                fibonacci[1] = 1;
            }
            else {
                fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
            }
        }
        System.out.println(fibonacci[N]);
    }
}

 

4. BufferedReader + 배열

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
    public static void main(String[] args) throws IOException {
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        //F(0)부터 시작 ➡ N + 1 크기로 생성
        int[] fibonacci = new int[N + 1];
 
        for(int i = 0; i < fibonacci.length; i++) {
            /*
            fibonacci[0], fibonacci[1] 각각 값 초기화하지 않을 시
            index에 음수값 들어가 에러 발생
            */
            if(i == 0) {
                fibonacci[0] = 0;
            }
            else if(i == 1) {
                fibonacci[1] = 1;
            }
            else {
                fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
            }
        }
        System.out.println(fibonacci[N]);
    }
}

성능

  1. BufferedReader + 배열
  2. BufferedReader + 재귀함수
  3. Scanner + 배열
  4. Scanner + 재귀함수

 


출처 : https://st-lab.tistory.com/94