백준(Java)/23년 5월

[Java] 백준 - 24416번: 피보나치 수 1

C0MPAS 2023. 5. 2. 14:52

5월 2일(화) - 동적 계획법 1 (24416번)

 

24416번: 알고리즘 수업 - 피보나치 수 1

오늘도 서준이는 동적 프로그래밍 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍

www.acmicpc.net

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

문제점

1. 세상에...출력형식을 틀려서 한 번 날려먹었다

-> 자바에서 한 줄에서 중간에 공백을 만들고 출력을하려는 경우에는 + " " + 를 활용하도록 하자

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

import java.util.StringTokenizer;

public class Main {
    public static int count_1=0;
    public static int dp_count=0;
    public static int[] dp;
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        dp = new int[n+1];

        fib(n);
        fibonacci(n);
        System.out.println(count_1 + " " + dp_count);
    }

    public static int fib(int n){
        if(n==1 || n==2)
        {
            count_1++;
            return 1;
        }
        else
        {
            return fib(n-2) + fib(n-1);
        }
    }

    public static int fibonacci(int n){
        dp[1] = dp[2] = 1;
        for(int i=3; i<=n; i++)
        {
            dp[i] = dp[i-2] + dp[i-1];
            dp_count++;
        }
        return dp[n];
    }
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ