Coding Test

백준 9009번 : 피보나치

연_우리 2021. 10. 20. 23:07
반응형


30분정도 고민해봤는데 피보나치 문제는 처음이라 감이 안잡혀서 검색해보고 풀었다

피보나치 배열을 아예 만든 후

입력값과 배열의 값을 내림차순 비교하면된다.

 

* 나는 예제 입력값을 매번 입력하는게 귀찮아서..(예제입력이 5개면 정말..)

테스트에서 활용하려구 메소드를 나누어 작성한다 

import java.util.ArrayList;
import java.util.Scanner;

class Fibonacci{
    int size = 0;
    int[] input;
    ArrayList<Integer> fibo = new ArrayList<Integer>();

    void init(){
        int k=2;
        fibo.add(0);
        fibo.add(1);
        while(fibo.get(k-1)<=1000000000){
            int temp = fibo.get(k-1) + fibo.get(k-2);
            fibo.add(k, temp);
            k++;
        }
    }

    void scan(){
        Scanner scan = new Scanner(System.in);
        size = scan.nextInt();
        input = new int[size];
        for (int i = 0; i < input.length; i++) {
            input[i] = scan.nextInt();
        }
    }

    void process(){
//        for (Integer integer : fibo) {
//            System.out.println(integer);
//        }
//        System.out.println(fibo.size());

        for (int i = 0; i < input.length; i++) {
            StringBuffer output = new StringBuffer("");
            for (int j = fibo.size()-1; j >= 1 ; j--) {
                if(input[i] >= 0){
                    if(input[i] >= fibo.get(j)){
                        input[i] = input[i] - fibo.get(j);
                        output.insert(0, " "+fibo.get(j));
                    }
                }
            }
            System.out.println(output.toString().trim());
        }

    }
}

public class Main {
    public static void main(String[] args) {
        Fibonacci f = new Fibonacci();
        f.init();
        f.scan();
        f.process();
    }
}
class MainTest {
    void scan_input(String inputed){
        InputStream in = new ByteArrayInputStream(inputed.getBytes());
        System.setIn(in);
    }

    @Test
    void test1() {
        Fibonacci f = new Fibonacci();
        f.init();
        scan_input("4\n" +
                "100\n" +
                "200\n" +
                "12345\n" +
                "1003");
        f.scan();
        f.process();
    }

}

 

반응형

'Coding Test' 카테고리의 다른 글

백준 1026번 : 보물  (0) 2021.10.27
백준 1946번 : 신입사원  (0) 2021.10.26
백준 2217번 : 로프 (시간초과 해결과정)  (0) 2021.10.25
백준 2839번 : 설탕 배달  (2) 2021.10.23
백준 19941번 : 햄버거 분배  (0) 2021.10.21
  • 네이버 블러그 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 구글 플러스 공유하기
  • 카카오톡 공유하기