피보나치 수열

문제

1) 피보나치 수열을 출력한다. 피보나치 수열이란 앞의 2개의 수를 합하여 다음 숫자가 되는 수열이다.

2) 입력은 피보나치 수열의 총 항의 수 이다. 만약 7이 입력되면 1 1 2 3 5 8 13을 출력하면 된다.

입력

첫 줄에 총 항수 N(3<=N<=45)이 입력된다.

출력

첫 줄에 피보나치 수열을 출력합니다.

예시 입력 1

10

예시 출력 1

1 1 2 3 5 8 13 21 34 55

해결방법

  • 피보나치 수열 : 앞의 두 수를 합치면 다음 수가 되는 수열. ( 0,1,1,2,3,5,8 … )

코드

import java.util.*;

class Main {
    public int[] solution(int n) {
        int[] answer = new int[n];
        // 첫번째와 두번째는 고정 숫자이기 때문에 미리 배열의 원소로 정해놓고 
        // 3번째 항부터 계산 시작하는 방법
        answer[0] = 1;
        answer[1] = 1;
        for (int i = 2; i < n; i++) {
            answer[i] = answer[i - 2] + answer[i - 1];
        }
        return answer;
    }

    public static void main(String[] args) {
        Main.Main T = new Main.Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        for (int x : T.solution(n)) System.out.print(x + " ");
    }
}

import java.util.*;

class Main {
    public void solution(int n) {
        int a = 1, b = 1, c;
        System.out.print(a + " " + b + " ");
        for (int i = 2; i < n; i++) {
            // 어차피 두 수를 더한게 다음 수가 되므로
            // 변수를 지정하여 더한 값을 다시 변수에 저장하는 과정을 거쳐 계산.
            c = a + b;
            System.out.print(c + " ");
            a = b;
            b = c;
        }
    }

    public static void main(String[] args) {
        Main.Main T = new Main.Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        T.solution(n);
    }
}


© 2024. Chiptune93 All rights reserved.