CodeStates_BE_44/과제
피보나치 수열 프로그램 만들기
조화이트
2023. 2. 23. 17:09
728x90
💡 피보나치 수열 프로그램을 만들고 코드 리팩터링하기
출력 예시
[안내]피보나치 수열 프로그램 시작.
원하는 수열의 개수를 입력해 주세요 : 6
[피보나치 수열 출력]
1
1
2
3
5
8
[안내]프로그램을 종료합니다.
✏프로그램의 기능
- 사용자의 피보나치 수열 개수 입력 받기
- 피보나치 점화식을 통한 연산
- 피보나치 수열 출력 및 프로그램 종료 메시지 출력
Step 1. main 메서드에 전부 작성
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;
public class Fibonacci {
public static void main(String[] args) throws IOException {
// 1단계. 프로그램 시작을 알리는 출력문 선언
System.out.println("[안내]피보나치 수열 프로그램 시작.");
// 사용자의 입력값 받기.
System.out.print("원하는 수열의 개수를 입력해 주세요 : ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int inputNum = Integer.parseInt(br.readLine());
// 2단계. 피보나치 수열의 점화식 코드 작성
// 피보나치 수열의 첫 번째와 두 번째 값을 변수로 정의합니다.
int first = 1;
int second = 1;
// 피보나치 수열이 저장될 배열 객체 선언
ArrayList<Integer> fibo = new ArrayList<>();
// 피보나치 수열의 첫 번째, 두 번째 값 할당
fibo.add(first);
fibo.add(second);
// 반복문을 통한 피보나치 수열 점화식 작성
for(int i=2; i<inputNum; i++) {
fibo.add(fibo.get(i-2)+fibo.get(i-1));
}
// 3단계.
// 결과 출력을 위한 안내 문구 출력 입니다.
System.out.println("[피보나치 수열 출력]");
for(int i=0; i<fibo.size(); i++) {
System.out.println(fibo.get(i));
}
System.out.println("[안내]프로그램을 종료합니다.");
}
}
Step 2. 코드 리팩터링
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;
public class Fibonacci {
// 피보나치 수열의 첫 번째와 두 번째 값을 변수로 정의합니다.
static final int first = 1;
static final int second = 1;
static int inputNum;
public static void main(String[] args) throws IOException {
// 1단계. 프로그램 시작을 알리는 출력문 선언
System.out.println("[안내]피보나치 수열 프로그램 시작.");
System.out.print("원하는 수열의 개수를 입력해 주세요 : ");
// 사용자의 입력값 받기.
inputNum = getUserInput();
// 피보니치 수열이 저장될 배열 객체 선언
ArrayList<Integer> fibo = new ArrayList<>();
// 피보나치 수열의 첫 번째, 두 번째 값 할당
fibo.add(first);
fibo.add(second);
// 피보나치 수열 생성
getFibonacci(fibo);
//피보나치 수열 출력
System.out.println("[피보나치 수열 출력]");
printNumbers(fibo);
System.out.println("[안내]프로그램을 종료합니다.");
}
// 사용자의 입력값 받기
static int getUserInput() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
return Integer.parseInt(br.readLine());
}
// 반복문을 통한 피보나치 수열 생성
static void getFibonacci(ArrayList<Integer> fibo) {
for(int i=2; i<inputNum; i++) {
fibo.add(fibo.get(i-2)+fibo.get(i-1));
}
}
// 만들어진 피보나치 수열 출력
static void printNumbers(ArrayList<Integer> fibo) {
for(int i=0; i<fibo.size(); i++) {
System.out.println(fibo.get(i));
}
}
}
728x90
반응형