피보나치 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12945
피보나치 문제를 푸는 경우 재귀함수를 이용하거나 반복문을 이용해서 해결할 수 있다.
- 피보나치
class Solution {
static int[] memo;
public int solution(int n) {
memo = new int[n+1];
int answer = fibo(n);
return answer;
}
public int fibo(int n){
if(n==0){
return 0;
}
if(n==1){
return 1;
}
// 메모이제이션 작업(피보나치 이전 결과를 배열에 저장)
if(memo[n]!=0){
return memo[n];
}
memo[n]=(fibo(n-2)+fibo(n-1))%1234567;
return memo[n];
}
}
반복문
class Solution { public int solution(int n) { if(n <= 1) return n; int answer = 0; int n1 = 0; int n2 = 1; for(int i=2; i<=n; i++){ answer = (n1 + n2) % 1234567; n1 = n2; n2 = answer; } return answer; } }
반복문이 속도는 더 빠르지만
재귀함수를 이용하면 변수 사용을 줄인다 + 가독성을 향상시킨다
'CS > 알고리즘' 카테고리의 다른 글
하노이의 탑 (0) | 2023.10.27 |
---|---|
시간 계산하기(손코딩) (0) | 2023.10.20 |
소수 구하기 (0) | 2023.10.03 |
중앙값 구하기 (0) | 2023.09.20 |
알고리즘 스터디 문제 1,2(기수변환) (0) | 2023.09.15 |