memostack
article thumbnail
피보나치 수열 효율적으로 풀어보기 (Java 알고리즘)
Algorithm 2020. 8. 31. 20:37

피보나치 수열 피보나치 수열을 이전 항 2개를 더한값이 현재 항이 되는 수열이다. 예를들어, A(n) = A(n-1) + A(n-2) (단, A(1) = 1, A(2) = 1 이다) 를 만족하는 수열 2 3 5 8 13 21 34 55 89 144 233 ... 프로그래밍 피보나치 수열을 풀어보는 방법은 여러방법이 있다. 그 중 아래 3가지 방법으로 풀어본다. 배열로 풀어보는 방법 배열없이 풀어보는 방법 재귀함수를 이용하는 방법 1. 배열로 풀어보는 방법 STEP 1. int 배열을 선언한다. STEP 2. A(1) = 1, A(2) = 1을 미리 초기화한다. STEP 3. 반복문을 이용하여 A(n) = A(n-1) + A(n-2)를 이용하여 계속해서 더한다. public static void main(..

article thumbnail
피보나치 알고리즘과 메모이제이션 (with Python3)
Algorithm 2020. 3. 17. 20:05

피보나치 알고리즘 피보나치(Fibonacci) 수열은 첫번째와 두번째 원소가 0 과 1이고, 세번째 원소부터는 이전 원소 두 개의 합인 수열을 말한다. 예를들어, 0, 1, 1, 2, 3, 5, 8, 13, 21, ... Python3 코드 아래 코드는 unittest 기반으로 작성했다. 전체 로직은 fibo() 메소드를 참고한다. # -*- coding: utf-8 -*- import unittest class Exam06(unittest.TestCase): @classmethod def setUp(cls): pass def fibo(self, k): if k == 1: return 0 elif k == 2: return 1 return self.fibo(k-1) + self.fibo(k-2) def ..