오늘보다 더 나은 내일의 나에게_

자바 알고리즘 문제 풀이 Array Q04_피보나치 수열 본문

ALGORITHM/inflearn_javaAlgorithm

자바 알고리즘 문제 풀이 Array Q04_피보나치 수열

chan_96 2022. 2. 10. 21:26
728x90
설명

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

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


입력

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


출력

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

 


예시 입력1


예시 출력

10 1 1 2 3 5 8 13 21 34 55

 

코드

해설 코드

import java.util.*;
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-2]+answer[i-1];
		}
		return answer;
	}
	public static void main(String[] args){
		Main T = new 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 T = new Main();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		T.solution(n);
	}
}



 

 

풀이 및 정리 

피보나치 수열이란?
=> 앞의 2개의 수를 합하여 다음 숫자가 되는 수열
ex) 1, 1, 2, 3, 5, 8, 13, 21, 34

첫 번째 해설 코드는 int[]의 0번째, 1번째 인덱스에 1의 값으로 초기화시켜준다.
그리고 반복문을 작성하고 int[]배열의 answer[i]번째 값에는 answer[i-1]+answer[i-2]을 구해 대입시켜준다.


만약 배열을 사용하지 않는다면 두 번째 해설 코드를 사용할 수 있다. 
a, b, c 세 개의 변수를 선언하고 a=1, b=1로 초기화시켜준다.
반복문을 작성한 뒤 c=a+b; 값을 출력하고
a에는 b값을 대입하고 b에는 c값을 대입시켜주고 다시 반복문이 진행된다.

  i = 2 i = 3 i = 4 i = 5 ...
a 1 1 2 3 ...
b 1 2 3 5 ...
c 2 3 5 8 ...
728x90
Comments