BackJoon Algorithm 피보나치 함수 1003 (Java)
BackJoon Algorithm - Java
문제
풀이
- 일반 예시 대로 풀면 시간초과가 나옵니다.
- 피보나치 함수을 나열하면 일정하게 나오는 숫자들이 있습니다.
- 이 규칙대로 풀어보면
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Back_1003 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
int arr[] = new int[T];
for(int i = 0; i< T;i++){
arr[i] = Integer.parseInt(br.readLine());
}
// Fibonacci(n) 0 개수는 = Fibonacci(n-1) 1의개수
// Fibonacci(n) 1 개수는 = Fibonacci(n-1) 0 + 1 의개수이다.
for (int i = 0; i < T; i++) {
int zero_count = 0;
int first_count = 1;
if(arr[i] == 0){
zero_count = 1;
first_count = 0;
System.out.println(zero_count + " " + first_count);
}
else if(arr[i] == 1){
System.out.println(zero_count + " " + first_count);
}
else{
for (int j = 2; j <= arr[i]; j++) {
int temp = zero_count;
zero_count = first_count;
first_count = temp + first_count;
}
System.out.println(zero_count + " " + first_count);
}
}
br.close();
}
}
댓글남기기