동적 프로그래밍 (Dynamic Programming: DP)

2021. 8. 24. 16:03·알고리즘

동적 프로그래밍 (DP)

 

: 큰 하나의 문제를 여러 하위 문제로 나누어 풀고 그 결과들을 결합해서 최종 목적인 큰 문제를 해결하는 방식의 알고리즘.

 

💡 반복적인 처리(계산)를 피할 수 있음  ☞ 이전 단계 처리 결과를 저장하고 다음 단계를 해결할 때 이미 진행했던 부분은 저장되어 있던 값을 불러옴

💡 점화식을 세우면 쉽게 DP 문제 해결 가능 (ex. 피보나치수열 점화식 : dp[i] = dp[i-1]+dp[i-2] )

💡 어떤 값을 어떤 방식으로 저장할지 정하는 것이 포인트!!

 

 

<적용방법>

1. Top-Down:  말 그대로 문제풀이가 위에서 아래로 진행 > 주로 재귀 함수 사용 > 시간 복잡도 문제가 발생할 수 있고 저장 유무에 따라 DP로 보지 않는 의견도 있음

2. Bottom-Up: 반대로 문제풀이가 아래에서 위로 진행 > 반복문 사용 > 진정한 동적 프로그래밍 방식

 

 

참고 문제 : https://leetcode.com/problems/uncrossed-lines/

'알고리즘' 카테고리의 다른 글

[백준] 15683 : 감시 <JAVA>  (1) 2025.06.17
[알고리즘] Counting sort (+ 백준 10989)  (0) 2021.06.21
[백준] 1436 : 영화감독 숌 <JAVA>  (0) 2021.01.14
[백준] 2798 : 블랙잭 <JAVA>  (0) 2021.01.13
[백준] 2231 : 분해합 <JAVA>  (0) 2021.01.13
'알고리즘' 카테고리의 다른 글
  • [백준] 15683 : 감시 <JAVA>
  • [알고리즘] Counting sort (+ 백준 10989)
  • [백준] 1436 : 영화감독 숌 <JAVA>
  • [백준] 2798 : 블랙잭 <JAVA>
HBean_
HBean_
백엔드 개발자의 개발 로그 💻
  • HBean_
    개발_log
    HBean_
  • 전체
    오늘
    어제
    • 전체 (103)
      • WEB (49)
        • Spring (14)
        • AWS EC2 (6)
        • DB (3)
        • 2020_webCamp (25)
        • JPA (1)
      • Devops (2)
      • 보안 (4)
      • Git (6)
      • JAVA (13)
      • 자료구조 (2)
      • 알고리즘 (11)
      • 네트워크 (2)
      • SStudy (2)
      • 실전프로젝트2 (4)
      • 개발 일기 (1)
      • 개발툴 (4)
      • Intellij (2)
      • 이슈 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    톰캣
    인텔리제이
    IntelliJ
    플러그인
    웹
    tomcat
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
HBean_
동적 프로그래밍 (Dynamic Programming: DP)
상단으로

티스토리툴바