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 + 재귀함수
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 11729번 : 하노이 탑 이동 순서 - Java (0) | 2022.04.07 |
---|---|
[백준] 2447번 : 별 찍기 - 10 - Java (0) | 2022.04.06 |
[백준] 1002번 : 터렛 - Java (0) | 2022.04.04 |
[백준] 3053번 : 택시 기하학 - Java (0) | 2022.04.04 |
[백준] 4153번 : 직각삼각형 - Java (0) | 2022.04.01 |
댓글