Algorithm/Baekjoon
[백준] 10870번 : 피보나치 수 5 - Java
unknownomad
2022. 4. 5. 19:13
https://www.acmicpc.net/problem/10870
10870번: 피보나치 수 5
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가
www.acmicpc.net
풀이
1. Scanner + 재귀함수
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
System.out.println(fibonacci(N));
}
//피보나치 함수
static int fibonacci(int N) {
if (N == 0) {
return 0;
}
if (N == 1) {
return 1;
}
return fibonacci(N - 1) + fibonacci(N - 2);
}
}
2. BufferedReader + 재귀함수
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.println(fibonacci(N));
}
//피보나치 함수
static int fibonacci(int N) {
if (N == 0) {
return 0;
}
if (N == 1) {
return 1;
}
return fibonacci(N - 1) + fibonacci(N - 2);
}
}
3. Scanner + 배열
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
//F(0)부터 시작 ➡ N + 1 크기로 생성
int[] fibonacci = new int[N + 1];
for(int i = 0; i < fibonacci.length; i++) {
/*
fibonacci[0], fibonacci[1] 각각 값 초기화하지 않을 시
index에 음수값 들어가 에러 발생
*/
if(i == 0) {
fibonacci[0] = 0;
}
else if(i == 1) {
fibonacci[1] = 1;
}
else {
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
}
}
System.out.println(fibonacci[N]);
}
}
4. BufferedReader + 배열
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
//F(0)부터 시작 ➡ N + 1 크기로 생성
int[] fibonacci = new int[N + 1];
for(int i = 0; i < fibonacci.length; i++) {
/*
fibonacci[0], fibonacci[1] 각각 값 초기화하지 않을 시
index에 음수값 들어가 에러 발생
*/
if(i == 0) {
fibonacci[0] = 0;
}
else if(i == 1) {
fibonacci[1] = 1;
}
else {
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
}
}
System.out.println(fibonacci[N]);
}
}
성능
- BufferedReader + 배열
- BufferedReader + 재귀함수
- Scanner + 배열
- Scanner + 재귀함수