import java.io.*;
import java.util.*;
class Main{
static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
static StringBuilder sb=new StringBuilder();
static int N;
static int[][] arr=new int[41][2];
public static void main(String args[]) throws Exception {
N=Integer.parseInt(br.readLine());
arr[0][0]=1;
arr[0][1]=0;
arr[1][0]=0;
arr[1][1]=1;
for(int i=2;i<41;i++) {
arr[i][0]=arr[i-1][0]+arr[i-2][0];
arr[i][1]=arr[i-1][1]+arr[i-2][1];
}
for(int i=0;i<N;i++) {
int temp=Integer.parseInt(br.readLine());
sb.append(arr[temp][0]+" "+arr[temp][1]+"\n");
}
System.out.println(sb);
}
}
처음에는 재귀를 이용한 방법으로 풀었다가 시간 초과에 막혔습니다.
시간 초과를 줄일 방법을 찾던 중 배열을 이용해 이중배열 arr[i][0]에 i번째 피보나치 수에서 0번째 피보나치 수가 쓰인 횟수, arr[i][1]에 i번째 피보나치 수에서 1번째 피보나치 수가 쓰인 횟수를 저장해 i가 40이 될 때까지 저장했습니다.
'프로그래밍 문제 > BOJ(백준 온라인 저지)' 카테고리의 다른 글
[BOJ 11725번] 트리의 부모 찾기(JAVA) (0) | 2020.10.09 |
---|---|
[BOJ 17263] Sort 마스터 배지훈(JAVA) (0) | 2020.10.08 |
[BOJ 14888번] 연산자 끼워넣기(JAVA) (0) | 2020.10.06 |
백준 11654 / 아스키 코드 / C (0) | 2020.10.06 |
[BOJ 10814번] 나이순 정렬(JAVA) (0) | 2020.10.05 |