자바/알고리즘 문제 풀이

백준/10870 피보나치 수 5

backend dev 2022. 12. 5.

피보나치 수 5 

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 256 MB 86903 53223 45407 61.759%

문제

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.

n=17일때 까지 피보나치 수를 써보면 다음과 같다.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597

n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다.

출력

첫째 줄에 n번째 피보나치 수를 출력한다.

예제 입력 1 복사

10

예제 출력 1 복사

55

 


풀이

재귀함수를 구현하기전에 어떤 동작을 하는지 그려보면서 체크한다.

 

0, 1,1, 2,3 .... n

구해야하는것은 n번째  피보나치이다.

n번째 피보나치는 n-1 번째 피보나치수와 n-2번째 피보나치수를 더하면된다.

 

+

재귀적호출 종료 조건 -> 피보나치 0번째는 0 , 1번째는 1를 리턴해줌으로서 종료되면서 값이 구해짐

 

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws IOException {
        int n = Integer.parseInt(br.readLine());

        bw.write(fibo(n) + "\n");

        bw.flush();
        bw.close();

    }
    static int fibo(int n) {
        if (n == 0) {
            return 0;
        }
        if ( n == 1) {
            return 1;
        }
        return fibo(n - 1) + fibo(n - 2);

    }


}

 

 

다른사람 풀이

나와 풀이가 같다.

하지만 설명을 잘해놓음

 

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

 

st-lab.tistory.com

 

 

 

'자바 > 알고리즘 문제 풀이' 카테고리의 다른 글

백준/2798 블랙잭  (0) 2022.12.06
백준/25501 재귀의 귀재  (0) 2022.12.05
백준/10872 팩토리얼  (0) 2022.12.05
백준/10814 나이순 정렬  (0) 2022.12.05
백준/1181 단어 정렬  (0) 2022.12.05

댓글