이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

dp

  • 2022.07.25 22:23
  • Algorithm/Theory && Tip
반응형

 

 

 

고등학교 수학1 단원에서 배운 수학적 귀납법 개념을 프로그래밍에 적용시킨게 dynamic programming이다.

 

초기값(base)을 설정해주고, 점화식을 구해 임의의 N에 대해 모든 값을 구할 수 있도록 설계한다.

 

수학적 직관이 있으면 점화식을 생각할 때 매우 유리하다. 다소 발상적인 부분도 있어 알고리즘을 처음 접하는 경우라면 연습이 많이 필요하다. 관련 문제를 많이 많이 풀어보자.

 

반복문과 재귀 모두 사용할 수 있다. dp에서 중요한건 설정한 값에 대한 이해와 점화식... 여기서 반복문과 재귀는 구현하기 위한 도구로만 사용된다.

 

 

 

dp에서는 중복되는 계산을 줄이는 기법을 사용하는데, 재귀함수를 통해 dp를 구현할 때는 Memoization을 사용하고, 반복문을 통해 dp를 구현할 때는 Tabulation을 사용한다.

 

특정 배열을 하나 선언하고 값을 저장해 중복되는 계산을 피한다는 목적은 같다. 

메모이제이션은 Top - Down / 타뷸레이션은 Bottom - Up 이라고도 하는데.. 용어보다는 로직에 집중하자.

 

 

 

dp의 기본 개념은 저게 다인데 변형문제가 매우 많다.

dp배열의 원소가 뭘 의미하는지 / 점화식은 어떻게 작성되는지. 이 두 가지에 집중해 dp를 공부하자.

반응형

'Algorithm > Theory && Tip' 카테고리의 다른 글

백트래킹 정리  (0) 2022.08.19
최소 신장 트리  (0) 2022.07.29
dfs와 bfs  (0) 2022.07.25
백트래킹  (1) 2022.07.22
ArrayList에서 원소 제거  (0) 2022.07.21

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 백트래킹 정리

    백트래킹 정리

    2022.08.19
  • 최소 신장 트리

    최소 신장 트리

    2022.07.29
  • dfs와 bfs

    dfs와 bfs

    2022.07.25
  • 백트래킹

    백트래킹

    2022.07.22
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (677)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (142)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (17)
    • 👥 모각코 (9)
    • 💬 기록 (7)
    • 📚 공부 (6)
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바