피보나치 수열
문제
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);
}
}