ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [java] 백준 알고리즘 1003번 피보나치 함수 풀이
    알고리즘/백준 알고리즘 2018. 5. 10. 17:59



    이 문제를 다른 사람들은 어떻게 풀었는지 봤는데, 


    이 문제는 어떻게 푸느냐에 따라 정말 다양하게 풀어낼 수 있는 문제 같다.


    난 너무 쉽게 생각한걸까. 


    문제를 잘 들여다보면 return 값에서 해당하는 n에 대해 fibonacci(n-1) + finbonacci(n-2)니까


    fibonacci(n)이란 fibonacci(n-1)과 fibonacci(n-2)를 동시에 수행한다는 로직이 성립한다.


    그렇다면 fibonacci(n-1)에 해당하는 0이 출력되는 횟수와 1이 출력되는 횟수가 있을 것이고,


    fibonacci(n-2)에 해당하는 0이 출력되는 횟수와 1이 출력되는 횟수가 있을 것이다.


    그럼 이 두 가지 함수의 0 출력횟수와 1 출력횟수를 합쳐주면 fibonacci(n)에 해당하는


    0 출력횟수, 1 출력횟수가 나올 것이다.


    각 피보나치 함수마다 나올 0 출력 횟수를 담을 배열과 1 출력 횟수를 담을 배열을 둘로 나누어서 개발했다.


    * 소스


    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
    public class Baekjoon1003 {
     
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
            int t = Integer.parseInt(br.readLine()); // 테스트 케이스의 개수
            int[] nArray = new int[t];
            
            for(int i=0; i<t; i++) {
                nArray[i] = Integer.parseInt(br.readLine()); // 입력할 값들
            }
            
            int[] zeroCount = new int[41]; // 0~40까지 값이 들어가므로 총 배열의 크기는 41
            int[] oneCount = new int[41];
            
            zeroCount[0= 1// fibonacci(0)에 대한 출력횟수는 0은 1회, 1은 0회이다.
            oneCount[0= 0;
            zeroCount[1= 0// fibonacci(1)에 대한 출력횟수는 0은 1회, 1은 1회이다.
            oneCount[1= 1;
            
            for(int j=2; j<41; j++) { // 설명한 로직대로 쭉쭉 값이 들어간다.
                zeroCount[j] = zeroCount[j-1+ zeroCount[j-2];
                oneCount[j] = oneCount[j-1+ oneCount[j-2];
            }
            
            for(int k=0; k<nArray.length; k++) {
                System.out.println(zeroCount[nArray[k]] + " " + oneCount[nArray[k]]); // 입력한 값에 맞춰 담긴 배열에서 
            }
            
        }
    }
     
    cs


Designed by Tistory.