문제 해석
- 제목이 문제인데, 우리가 아는 피보나치 수를 구하면 된다.
- 첫번째 줄에 n을 입력받고 n의 피보나치 수를 구하면 된다.
- 피보나치를 구하는 방법은 아래와 같다.
- 만약 n이 6이라고 하면 0, 1, 1, 2, 3, 5, 8(즉, Fn = fn-1 + fn-2)을 해서 구하면된다. (단, 재귀에 속하는 문제이기 때문에 재귀를 사용해야한다.)
- 그림으로 설명하면 아래와 같다. (fibonacciNumber(0)은 0이고, fibonacciNumber(1)은 1이다.)
코드
import java.io.*;
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());
br.close();
System.out.println(fibonacciNumbers(N));
}
static int fibonacciNumbers(int n){
if(n == 0) return 0;
if(n == 1) return 1;
return fibonacciNumbers(n-1) + fibonacciNumbers(n-2);
}
}
결과
느낀 점
- 피보나치 수를 좀 오랜만에 본 느낌이라 처음에 '뭐였더라...?' 흠칫했지만 거의 바로 생각나서 크게 어려움없이 푼 문제였다.