알고리즘 및 자료구조/문제

백준알고리즘 2748번 피보나치 수2

ktko 2018. 5. 14. 09:07

백준알고리즘


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


2747번(피보나치 수)와 문제는 똑같은데 차이점은 입력받는 범위가 최대였을 때 int 형의 범위를 넘어가 버려서 문제가 된다. long형으로 변경하면 해결

import java.util.Scanner;

public class Main2 {
    static long[] array;
    public static void main(String[] args) {
        Scanner scan = new Scanner (System.in);
        int calData = Integer.parseInt(scan.nextLine().trim());
        
        array = new long[calData + 1];
        System.out.println(calculate(calData));
        
        scan.close();
    }
    
    public static long calculate(int data) {
        if(data == 0) {
            array[data] = 0;
            
            return 0;
        }
        
        if(data == 1) {
            array[data] = 1;
            
            return 1;
        }
        
        if(array[data] > 0) {
            return array[data];
        }
        
        array[data] = calculate(data-1) + calculate(data-2);
        
        return array[data];
    }
}