-
백준 2748번 피보나치 수열 동적계획법 활용 2가지 풀이 ( Java )Problem Solving/Java 2019. 10. 24. 05:47반응형
2748번: 피보나치 수 2
문제 피보나치 수는 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번째 피보나치 수를
www.acmicpc.net
- Top-Down ( 재귀 함수 호출 ) 방식
1234567891011121314151617181920212223242526272829303132333435363738394041public class Main {static long[] memo;// 메모이제이션 배열 생성static long fibonacci(int n) {if(n<=1) {// 0과 1은 답을 구할 수 없는 가장 작은 수return n;}else {if(memo[n]>0) {// 메모 되어 있다면return memo[n];// 메모 값을 리턴}memo[n] = fibonacci(n-1) + fibonacci(n-2);// 재귀 호출 보내서 받은 값을 메모에 담고return memo[n];// 메모를 리턴}}public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));// reader writer 생성memo = new long[91];int n = Integer.parseInt(br.readLine());long answer = fibonacci(n);}}- Bottom-Up ( 반복문 활용 ) 방식
12345678910111213141516171819202122232425public class FibonacciNumber2BottomUp {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));// reader writer 생성int n = Integer.parseInt(br.readLine());long[] fibonacci = new long[91];fibonacci[0] = 0;fibonacci[1] = 1;for (int i = 2; i <= n; i++) {fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];}}}반응형'Problem Solving > Java' 카테고리의 다른 글
백준 11726 2xn 타일링 동적계획법 활용 2가지 풀이 ( Java ) (3) 2019.10.24 백준 1463번 1로 만들기 동적계획법 활용 2가지 풀이 ( Java ) (0) 2019.10.24 백준 17103 골드바흐 파티션 문제풀이 ( Java ) (0) 2019.10.22 백준 17087 숨바꼭질 6 문제풀이 ( Java ) (0) 2019.10.22 백준 9613 GCD합 문제 풀이 ( Java ) (0) 2019.10.22