문제 : https://www.acmicpc.net/problem/2748
간단하게 구현할 수 있는 피보나치 수열에 동적계획법을 적용해봤다.
배열을 만들어서 피보나치 메소드에 배열의 위치를 알려주어 한번 계산한 피보나치수는 다시 계산하지 않도록 만들었다.
import java.util.Scanner; public class Main { public static void main(String[] args) { //피보나치 Scanner scan = new Scanner(System.in); int n = scan.nextInt(); long [] arr = new long [n+1]; for( int i = 0 ; i < arr.length; i ++) { arr[i] = -1; } System.out.println(fi(n, arr)); // for(int a : arr) { // System.out.print(a+" "); // } scan.close(); } static long fi(int num,long [] arr) { if(arr[num] != -1) { return arr[num]; } if (num == 0 || num == 1) { arr[num] = num; return num; } else { long result = fi(num-1,arr) + fi(num-2,arr); arr[num] = result; return result; } } }
'알고리즘 > 심심풀이 문제풀기' 카테고리의 다른 글
[심심풀이 백준문제풀기] 2750번 수 정렬하기 (삽입정렬) (0) | 2018.04.07 |
---|---|
[심심풀이 백준문제풀기] 1149번 RGB거리 (0) | 2018.03.16 |
[심심풀이 백준문제풀기] 2667번 단지번호붙이기 (0) | 2018.03.15 |
[심심풀이 백준문제풀기] 2178번 미로 탐색 (0) | 2018.03.14 |
[심심풀이 백준문제풀기] 7576번 토마토 (0) | 2018.03.14 |