문제 내용은 입력을 받아서 각 숫자별 피보나치 함수를 구했을 경우 0과 1이 몇개 들었는지 출력해주면 되는데
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
int[] zeros = new int[41];
int[] ones = new int[41];
zeros[0] = 1;
ones[0] = 0;
zeros[1] = 0;
ones[1] = 1;
for (int i = 2; i <= 40; i++) {
zeros[i] = zeros[i - 1] + zeros[i - 2];
ones[i] = ones[i - 1] + ones[i - 2];
}
for (int i = 0; i < count; i++) {
int input = Integer.parseInt(br.readLine());
System.out.println(zeros[input] + " " + ones[input]);
}
}
}
문제를 풀어보자면 매 수를 입력받을 때마다 피보나치 수를 직접 계산해주자면 경우의 수가 매우 많아지기 때문에 배열에 0갯수 1갯수 해서 최대 입력값인 40까지 들어올 수 있도록 배열 크기를 설정해 만들어준 뒤, for문을 돌리면서 피보나치 값에 해당되는 수를 모두 넣어놓고 이후 입력으로 0~N까지의 값이 들어오기 시작하면, 양식에 맞게 0과 1 갯수를 출력해주기만 하면 끝이다.
Leave a Reply