요깨비's LAB

[프로그래머스, JAVA] 피보나치 수 본문

알고리즘(Java)/프로그래머스

[프로그래머스, JAVA] 피보나치 수

요깨비 2019. 12. 23. 19:02

재귀를 이용하여 Top-Down이 아닌 Bottom-Up 방식으로 문제를 풀었습니다. 그 이유는, Top-Down으로 풀었을 경우에는 풀었던 문제를 다시 풀어야 하는 비효율이 존재하기 때문에 효율을 생각해서 Bottom-Up 방식으로 풀었습니다. Bottom-Up으로 바꾸니까 이 문제에 한해서 DP가 되버린 것 같기도 하네요

class Solution {
	int[] dp;
	
	public int solution(int n) {
		int answer = 0;
		dp = new int[n+1];
		dp[0] = 0;
		dp[1] = 1;
		
		if(n == 1) {
			answer = 1;
		}else {
			pibo(2,dp[0],dp[1],n);
		}
		
		answer = dp[n];
		
		return answer;
	}
	
	public void pibo(int k,int dp1,int dp2,int num) {
		dp[k] = (dp1 + dp2) % 1234567;
		if(k == num) {
			return;
		}
		
		pibo(k+1,dp2,dp[k],num);
	}
}
Comments