백준 9009 java : 그리디 알고리즘

magicdrill·2025년 6월 27일
0

백준 문제풀이

목록 보기
627/654

백준 9009 java : 그리디 알고리즘

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

public class BJ9009 {
    static Scanner sc = new Scanner(System.in);
    static int [] testCase;

    public static void main(String[] args) {
        inputData();
        findAnswer();

        sc.close();
    }

    public static void inputData(){
        int T, i;

        T = sc.nextInt();
        testCase = new int[T];
        for(i = 0; i < testCase.length; i++){
            testCase[i] = sc.nextInt();
        }
    }

    public static void findAnswer(){
        int i, index, temp, current;
        ArrayList <Integer> f = new ArrayList<>();

        //피보나치 수열 저장
        f.add(0);
        f.add(1);
        index = 2;
        while(true){
            temp = f.get(index - 2) + f.get(index - 1);
            if(temp > 1000000000){
                break;
            }
            f.add(temp);
            System.out.print(temp + " ");
            index++;
        }
        System.out.println();

        // 테스트케이스 풀이
        for(i = 0; i < testCase.length; i++){
            current = testCase[i];
            index = f.size() - 1;
            ArrayList<Integer> greedyFibo = new ArrayList<>();

            while(current != 0){
                if(f.get(index) > current){
                    ;
                }
                else if(f.get(index) == current){
                    greedyFibo.add(f.get(index));
                    break;
                }
                else{ //f.get(index) < current
                    greedyFibo.add(f.get(index));
                    current -= f.get(index);
                }
                index--;
            }

            Collections.sort(greedyFibo);
            for(int ans : greedyFibo){
                System.out.print(ans + " ");
            }

            System.out.println();
        }
    }
}

0개의 댓글