반응형
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 |