동적 프로그래밍 - 타뷸레이션

2024. 7. 18. 23:13·Algorithm

동적 프로그래밍 타뷸레이션

  • 타뷸레이션(Tabulation)은 동적 프로그래밍(Dynamic Programming, DP)의 또 다른 접근 방법
  • 하향식 접근 방식인 메모이제이션과 달리 상향식 접근 방식을 사용
  • 즉, 작은 부분 문제부터 해결해 나가며 최종 문제를 해결하는 방식입니다.

특징

  • 부분 문제의 중복: 작은 부분 문제를 먼저 해결해 이를 조합하여 큰 문제를 해결.
  • 상향식 접근법: 배열이나 테이블을 사용해 작은 부분 문제부터 차례대로 해결.
  • 공간 복잡도: 배열이나 테이블을 저장하기 위한 메모리가 필요.

장단점

장점 단점
명확한 순서로 문제를 해결 추가 메모리 사용
반복적 접근으로 재귀 호출 오버헤드 없음 초기 메모리 할당 및 관리 필요
일부 문제에 대해 간단하고 효율적인 솔루션 제공 DP가 적용되지 않는 문제도 존재

 

시간복잡도

알고리즘 종류 시간 복잡도
피보나치 수열 (재귀) O(2^n)
피보나치 수열 (타뷸레이션) O(n)
최장 공통 부분 수열 O(m * n)
배낭 문제 O(n * W)

 

자바스크립트 예시

function fibonacci(n) {
    if (n <= 1) {
        return n;
    }

    const fib = new Array(n + 1).fill(0);
    fib[1] = 1;

    for (let i = 2; i <= n; i++) {
        fib[i] = fib[i - 1] + fib[i - 2];
    }

    return fib[n];
}

console.log(fibonacci(10)); // 55
console.log(fibonacci(20)); // 6765
console.log(fibonacci(30)); // 832040

'Algorithm' 카테고리의 다른 글

트리 (Tree) - 트리와 이진트리  (6) 2024.07.23
동적 프로그래밍 - 메모이제이션  (0) 2024.07.18
정렬 (Sort) - 퀵정렬  (0) 2024.07.16
정렬 (Sort) - 병합정렬  (0) 2024.07.16
정렬 (Sort) - 삽입정렬  (0) 2024.07.13
'Algorithm' 카테고리의 다른 글
  • 트리 (Tree) - 트리와 이진트리
  • 동적 프로그래밍 - 메모이제이션
  • 정렬 (Sort) - 퀵정렬
  • 정렬 (Sort) - 병합정렬
예슬e
예슬e
예슬e
예슬e개발로그
예슬e
전체
오늘
어제
  • 분류 전체보기 (27)
    • 💙 At work in 2024 (0)
    • FrontEnd (7)
      • React (7)
      • Package Manager (0)
      • Build System (0)
      • Transpiler & Bundler (0)
      • Architecture (0)
      • Test (0)
    • BackEnd (2)
    • CS (8)
      • Data Structure (7)
      • Network (1)
    • Algorithm (10)
    • Project (0)
    • Blog (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

리액트 파이버
리액트딥다이브
하노이의탑
리액트
자바스크립트
리액트파이버
api만들기
jsx
백엔드
리렌더링
재귀
알고리즘
메모이제이션
프론트엔드
useState
자료구조
자바스크립트배열
useEffect
useCallback
타뷸레이션

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.3
예슬e
동적 프로그래밍 - 타뷸레이션
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.