코딩테스트/기타

[배열] 피보나치 수열 .java

머밍 2024. 10. 10. 11:42

설명

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개의 수를 합하여 다음 숫자가 되는 수열

 

import java.util.Scanner;

public class Main {

    public static void main(String[] args)  {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int[] nums = new int[n];
        //0번,1번은 1로 고정
        nums[0] = 1;
        nums[1] = 1;
        
        for (int i = 2; i < n; i++) {
            nums[i] = nums[i - 1] + nums[i-2];
        }

        for(int i = 0; i < n; i++) {
            System.out.print(nums[i] + " ");
        }

    }


}

 

다른 풀이 - 배열, 함수형

내가 한 풀이의 함수형 코드이

import java.util.Scanner;

public class Main {
    public int[] solution(int n){
        int[] answer = new int[n];

        answer[0] = 1;
        answer[1] = 1;

        for (int i = 2; i < n; i++){
            answer[i] = answer[i-1] + answer[i-2];
        }
        return answer;
    }
    public static void main(String[] args)  {
        Main T =new Main();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        for(int i : T.solution(n)) System.out.print(i + " ");

    }


}

 

 

다른 풀이 - 배열 X, 변수 3개 for문으로

배열 사용 안하고 손코딩 버전의 구현..

재밌는 방법~!

import java.util.Scanner;

public 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 T =new Main();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        T.solution(n);

    }


}