본문 바로가기

프로그래밍/Algorithm

백준 다이나믹 프로그래밍 - 피보나치 수열 1003(Java)

https://www.acmicpc.net/problem/1003

 

1003번: 피보나치 함수

각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 


처음에 재귀함수로 풀었다가 시간 초과가 나타남. 하나 하나씩 필기하여서 규칙성을 찾는 것이 중요하다.

내가 생각하지 못했던 2중 배열로 푼 문제

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package dynamic;
 
import java.util.Scanner;
 
public class Fibonacci_1003 {
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
 
        int n = sc.nextInt();
 
        int[][] f = new int[41][2];
 
        f[0][0= 1;
        f[1][1= 1;
        for (int i = 2; i < 41; i++) {
            for (int j = 0; j < 2; j++) {
                f[i][j] = f[i - 1][j] + f[i - 2][j];
            }
        }
 
        for (int i = 0; i < n; i++) {
            int d = sc.nextInt();
 
            System.out.println(f[d][0+ " " + f[d][1]);
 
        }
 
    }
 
}
 
cs