Dynamic Programming - 기초

2025. 5. 17. 21:41·coding test/Algorithm

https://youtu.be/eJC2oetXaNk?si=n6ZFPnv56clCkA8f

코드없는 프로그래밍님의 영상이 가장 이해하기 좋았다.

 

<DP가 성립되기 위해서>

- Problem이 Sub Problem으로 쪼개질 때

- Sub Problem의 solution으로 Problem의 solution을 구할 수 있을 때

- 이런 Sub Problem들이 겹칠 때

 

fib_array=[0,1]

def fib_td(n): #Top-down
    if n<len(fib_array):
        return fib_array[n]
    else:
        fib=fib_td(n-1)+fib_td(n-2)
        fib_array.append(fib)
        return fib

하지만 Top-Down 방식은 recursion depth exceeded 에러가 발생할 수도 있음.

 

def fib_dp(n): #Bottom-up
    fib_array=[0,1]

    for i in range(2,n+1):
        num=fib_array[i-1]+fib_array[i-2]
        fib_array.append(num)
    return fib_array[n]

이러한 Bottom-up의 time complexity는 O(n)

space complexity는 O(n)에서 이전 값들은 지워도 되므로 O(1)까지로 줄어듦.

 

 

DP 너무 어렵다....

'coding test > Algorithm' 카테고리의 다른 글

최소 공통 조상 (LCA, Lowest Common Ancestor)  (0) 2025.12.12
최단 경로  (1) 2025.08.31
최소 신장 트리(MST)  (0) 2025.08.31
'coding test/Algorithm' 카테고리의 다른 글
  • 최소 공통 조상 (LCA, Lowest Common Ancestor)
  • 최단 경로
  • 최소 신장 트리(MST)
wish404
wish404
자동 로그
  • wish404
    wish-log
    wish404
    • 홈
    • 태그
    • 방명록
    • github
    • 분류 전체보기 (75) N
      • log (8)
        • 블로그 관리 (5)
        • 에러 모음 (2)
      • coding test (47)
        • Algorithm (4)
        • Baekjoon (34)
        • SW Expert Academy (6)
        • etc (3)
      • 프로그래밍 언어 (7)
        • JAVA (7)
      • 데이터 엔지니어링 (5)
        • Kafka (0)
        • Spark (4)
        • Airflow (1)
        • Elasticsearch (0)
      • 머신러닝&딥러닝 (3)
        • Kaggle 스터디 (3)
        • 논문 리뷰 (0)
        • MLOps (0)
      • 신입 개발자가 되기까지 (5) N
        • 취준일기 (1)
        • SSAFY (2)
        • 프로젝트 (1) N
        • CS 공부 (1)
  • 인기 글

  • 태그

    그리디
    중위순회
    후위순회
    BFS
    복습해야지
    복습
    dfs
    싸피
    Dijkstra
    벨만포드
    dp
    그리디 알고리즘
    다익스트라
    최단 경로
    dijk
    heapq
    전위순회
    SSAFY
    플로이드워샬
    틀린문제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
wish404
Dynamic Programming - 기초
상단으로

티스토리툴바