코딩테스트
[배열] 4. 피보나치 수열
개발하는지호
2023. 12. 12. 22:20
4. 피보나치 수열
설명
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
<<풀이>>
-나의 풀이-
금방 풀었다.
import java.util.Scanner;
class Main {
public int[] soltuion(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 in = new Scanner(System.in);
int n = in.nextInt();
for (int a : T.soltuion(n)) {
System.out.print(a + " ");
}
}
}
-강사님 풀이-
우선 강사님이 두 가지 방법으로 풀었는데, 첫 방식은 나와 같다. 너무 금방 풀어서 조건을 추가해서 다시 풀어보았다.
하드 코딩이다 ㅋㅋ
*배열을 사용하지 않고 풀기
import java.util.Scanner;
class Main {
public void soltuion(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 in = new Scanner(System.in);
int n = in.nextInt();
T.soltuion(n);
}
}
이번 꺼는 메서드의 리턴값이 void이다. 바로 콘솔로 출력할 때는 void로 리턴값을 준다.
그리고 int a=1, b=1 , c; 이런 식의 표현은 딱딱했던 나의 규율을 조금 풀어준다. 이러한 여유러움 나도 가지고 싶다.
이렇게 다양하게 문제를 접근하니 나의 시각이 더 넓어지는 거 같다. 나도 여러가지 계산 방법을 구현해보면서 이러한 시각을 확장해 나가자.