알고리즘(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);
}
}