본문 바로가기
Computer/Algorithm_Java

[BaekJoon] 10870번 피보나치 수 5 문제 풀이 (Success)

by HJ0216 2023. 9. 11.
 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

 

Language: Java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        StringTokenizer st = new StringTokenizer(br.readLine());
 
        int N = Integer.valueOf(st.nextToken());
        int[] arr = new int[N + 1];
 
        arr[0= 0;
 
        if (N >= 1) {
            arr[1= 1;
 
            for (int i = 2; i <= N; i++) {
                arr[i] = arr[i - 1+ arr[i - 2];
            }
        }
 
        bw.write(arr[N] + "");
 
        bw.flush();
        bw.close();
 
    }
}
 
 

🤔 해설

1. if (N >= 1) { ... }

    - N=0일 때, arr[1]을 입력하면 ArrayIndexOutofBoundsException이 발생하므로 조건문에서 처리

2. arr[i] = arr[i - 1] + arr[i - 2];

    - Fn = Fn-1 + Fn-2 (n ≥ 2)

 

😮  외의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.valueOf(st.nextToken());
 
        bw.write(fibonacci(N) + "");
 
        bw.flush();
        bw.close();
 
    }
 
    public static long fibonacci(int N) {
        if(N==0return N;
        if(N==1return N;
        
        return fibonacci(N-2+ fibonacci(N-1);
        
    }
}
 
 

1. fibonacci(int N)

    - 재귀호출 사용

 

 

 

🔗 소스 코드
GitHub

 

📚 참고 자료

 

[백준] 10870번 : 피보나치 수 5 - JAVA [자바]

 

st-lab.tistory.com