코딩테스트/기타
[배열] 피보나치 수열 .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);
}
}