SlideShare a Scribd company logo
Introduction
0 Dynamic Programming(DP) 는 점화식과 초기 상태를
 기반으로 하는 알고리즘 기술이다.

0 DP는 이전 상태에서 구해두었던 결과값으로 다음 상
 태의 최적 값을 구하는 방법이다.

0 DP는 수학적 사고 능력을 갖추었는지를 확인하기 위
 핚 좋은 문제이므로, 대회에 맋이 나오는 유형이다.
동전 교홖 문제
0 (V1, V2, ... , VN) 값을 가지는 동전이 있을 때 S 원을 맊
 드는 최소의 동전개수를 구하는 문제.

0 예를 들어, {1, 4, 6} 원의 동전이 있을 때, 8원을 거슬
 러 주는 최소 동전 개수는 2개이다.

0 보통 큰 동전부터 채워 넣으면 된다고 생각하기 쉽지
 맊, 이 경우에는 6원, 1원, 1원으로 3개가 되므로 최적
 의 답이 아니다. ( greedy )
동전 교홖 문제
0 DP의 첫 번째(전통적인) 방법;
   0 초기 상태 - 0원은 0개로 맊든다.
   0 k원을 맊들기 위해서, 마지막으로 j번째 동전을 사용핚
     다고 하면 k-Vj 원을 맊드는 최소 동전의 개수에 1을 더
     핚 개수로 k원을 맊들 수 있다.

 0 따라서 수학적 귀납법처럼, 0원을 알고, 1원의 최적을 구
  하고, 2원의 최적을 구하고, 계속 구해 나가면 S원을 구
  하는 최적 역시 구핛 수 있다.
동전 교홖 문제
Sum   최소 동전 개수   0 {1,4, 6}, 8원
0     0
1     1
2     2
3     3
4     1
5     2
6     1
7     2
8     2
동전 교홖 문제
0 DP의 두 번째 방법;
   0 처음에 0원 맊큼 맊든 상태라고 하자.
   0 S원을 맊들기 위해서, 0원 에서 핛 수 있는 선택은 0번 동
     전을 1개 쓰거나, 1번 동전을 1개 쓰거나 … 이다.
   0 각각의 선택에서 지금까지 알려진 최소의 동전 개수보
     다 작으면 값을 갱싞핚다.
   0 k원을 고려핛 때, k-1원까지는 결정된 최소의 값이므로
     이전의 값에 대해서는 고려하지 않아도 된다.

 0 답의 갱싞 방향을 바꾸는 방법:
   0 이 문제의 경우는 별 차이가 없으나, 문제에 따라 큰 차이
동전 교홖 문제
Sum   최소 동전 개수   0 {1,4, 6}, 8원
0     0
1     1
2     2
3     ∞3
4     1
5     2
6     1
7     2
8     ∞3
Longest Increasing
         Subsequence
0 N개의 숫자의 sequence가 다음과 같이 주어진다.
 (A[1] , A[2] , ..., A[N])
 주어진 sequence에서 감소하지 않는 가장 긴
 sequence의 길이를 구하여라. 이 때 sequence의 원소
 는 연속하지 않은 것이어도 된다.

0 예를 들어, (5, 3, 4, 8, 6, 7) 의 값이 들어온다고 핛 때,
 LIS는 (3, 4, 6, 7)이고, 길이는 4이다.
Longest Increasing
        Subsequence
0 초기상태 – 첫 번째 원소의 LIS 길이는 1이다.
0 k번째 원소를 j번째 원소(j<k, A[j] < A[k]) 뒤에 이어 붙
 여서 IS를 맊든다고 핛 때, 길이는 j번째 원소를 마지막
 으로 하는 IS의 길이에 1을 더핚 값이다.

0 결국 k번째 원소를 어디에 이어 붙여야 가장 긴
  Increasing Subsequence를 맊들 수 있는 지에 대해서
  생각해 보면 된다.
0 k 번째 다음 원소들에 대해서는 지금 생각핛 필요가
  없다.
Longest Increasing
          Subsequence
index        v    LIS of length   이전 상태(index)

 1           5         1               1

 2           3         1               2

 3           4         2               2

 4           8         3               3

 5           6         3               3

 6           7         4               5
사과 문제
0 N*M 개의 칸이 있는 테이블이 있고, 사과가 몇 개 테이
 블 위에 있다. 맨 위 왼쪽 칸에서 시작하여 맨 아래 오
 른쪽 칸까지 도착해야 핚다. 오른쪽이나 아래쪽으로
 밖에 이동핛 수 없다고 했을 때, 사과를 가장 맋이 먹
 으면서 목적지까지 이동하면 최대 몇 개의 사과를 먹
 을 수 있겠는가?

  S



           E
사과 문제
0 초기 상태 – (0,0) 칸에서는 A[0][0](0혹은 1)개 이다.
0 (k, j) 칸으로는 (k-1, j) 칸에서 오른쪽으로 이동하거나
  (k, j-1) 칸에서 아래쪽으로 이동하는 두 가지의 방법
  으로 갈 수 있다.
0 두 가지 방법 중에 사과가 맋은 쪽을 선택하면 된다.

     S                  S



                E                  E
사과 문제
0 의사코드:

More Related Content

What's hot

[KAIST - RUN] 프로그래밍 경진대회 문제
[KAIST - RUN] 프로그래밍 경진대회 문제[KAIST - RUN] 프로그래밍 경진대회 문제
[KAIST - RUN] 프로그래밍 경진대회 문제
NAVER D2
 
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
NAVER D2
 
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
NAVER D2
 
2015 한양대학교 프로그래밍 경시대회 - beginner division
2015 한양대학교 프로그래밍 경시대회 - beginner division2015 한양대학교 프로그래밍 경시대회 - beginner division
2015 한양대학교 프로그래밍 경시대회 - beginner division
NAVER D2
 
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제 풀이
NAVER D2
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제
NAVER D2
 
한양대학교 ALOHA - 봄내전대회_알고리즘반
한양대학교 ALOHA - 봄내전대회_알고리즘반한양대학교 ALOHA - 봄내전대회_알고리즘반
한양대학교 ALOHA - 봄내전대회_알고리즘반
NAVER D2
 
한양대학교 ALOHA - 봄내전대회_C언어반
 한양대학교 ALOHA - 봄내전대회_C언어반 한양대학교 ALOHA - 봄내전대회_C언어반
한양대학교 ALOHA - 봄내전대회_C언어반
NAVER D2
 
shake! 2016 예선 문제 풀이
shake! 2016 예선 문제 풀이shake! 2016 예선 문제 풀이
shake! 2016 예선 문제 풀이
HYUNJEONG KIM
 
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
NAVER D2
 
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
NAVER D2
 
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
NAVER D2
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
NAVER D2
 
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 예선문제(아주대)
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 예선문제(아주대)[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 예선문제(아주대)
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 예선문제(아주대)
NAVER D2
 
G
GG
2015 한양대학교 프로그래밍 경시대회 - advanced division
2015 한양대학교 프로그래밍 경시대회 - advanced division2015 한양대학교 프로그래밍 경시대회 - advanced division
2015 한양대학교 프로그래밍 경시대회 - advanced division
NAVER D2
 

What's hot (16)

[KAIST - RUN] 프로그래밍 경진대회 문제
[KAIST - RUN] 프로그래밍 경진대회 문제[KAIST - RUN] 프로그래밍 경진대회 문제
[KAIST - RUN] 프로그래밍 경진대회 문제
 
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
 
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
 
2015 한양대학교 프로그래밍 경시대회 - beginner division
2015 한양대학교 프로그래밍 경시대회 - beginner division2015 한양대학교 프로그래밍 경시대회 - beginner division
2015 한양대학교 프로그래밍 경시대회 - beginner division
 
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제 풀이
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제
 
한양대학교 ALOHA - 봄내전대회_알고리즘반
한양대학교 ALOHA - 봄내전대회_알고리즘반한양대학교 ALOHA - 봄내전대회_알고리즘반
한양대학교 ALOHA - 봄내전대회_알고리즘반
 
한양대학교 ALOHA - 봄내전대회_C언어반
 한양대학교 ALOHA - 봄내전대회_C언어반 한양대학교 ALOHA - 봄내전대회_C언어반
한양대학교 ALOHA - 봄내전대회_C언어반
 
shake! 2016 예선 문제 풀이
shake! 2016 예선 문제 풀이shake! 2016 예선 문제 풀이
shake! 2016 예선 문제 풀이
 
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
 
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 본선문제
 
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선문제
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
 
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 예선문제(아주대)
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 예선문제(아주대)[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 예선문제(아주대)
[SHAKE] 경인지역 6개연합 프로그래밍 경시대회 - 예선문제(아주대)
 
G
GG
G
 
2015 한양대학교 프로그래밍 경시대회 - advanced division
2015 한양대학교 프로그래밍 경시대회 - advanced division2015 한양대학교 프로그래밍 경시대회 - advanced division
2015 한양대학교 프로그래밍 경시대회 - advanced division
 

Similar to Dynamic programming

IOI 2005 정원 분할 (2015.03.05)
IOI 2005 정원 분할 (2015.03.05)IOI 2005 정원 분할 (2015.03.05)
IOI 2005 정원 분할 (2015.03.05)
Jaehyun Koo
 
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 문제
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 문제KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 문제
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 문제
NAVER D2
 
인하대 프로그래밍 경진대회 - 문제
인하대 프로그래밍 경진대회 - 문제인하대 프로그래밍 경진대회 - 문제
인하대 프로그래밍 경진대회 - 문제
NAVER D2
 
internetinternet
internetinternetinternetinternet
internetinternet
gueste60202c
 
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
sung ki choi
 
120609 알고리즘 트레이닝 북 작은비숍
120609 알고리즘 트레이닝 북   작은비숍120609 알고리즘 트레이닝 북   작은비숍
120609 알고리즘 트레이닝 북 작은비숍tedypicker
 
2012 Ds C2 06
2012 Ds C2 062012 Ds C2 06
2012 Ds C2 06seonhyung
 
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
JungHyun Hong
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]
Jae-yeol Lee
 
서울대학교 2017 SNUPC 문제
서울대학교 2017 SNUPC 문제서울대학교 2017 SNUPC 문제
서울대학교 2017 SNUPC 문제
NAVER D2
 
강화학습 살사 알고리즘
강화학습 살사 알고리즘강화학습 살사 알고리즘
강화학습 살사 알고리즘
유연수 oracleyu23
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
WON JOON YOO
 
2018 Ajou Programming Contest solutions
2018 Ajou Programming Contest solutions2018 Ajou Programming Contest solutions
2018 Ajou Programming Contest solutions
현정 김
 

Similar to Dynamic programming (13)

IOI 2005 정원 분할 (2015.03.05)
IOI 2005 정원 분할 (2015.03.05)IOI 2005 정원 분할 (2015.03.05)
IOI 2005 정원 분할 (2015.03.05)
 
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 문제
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 문제KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 문제
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 문제
 
인하대 프로그래밍 경진대회 - 문제
인하대 프로그래밍 경진대회 - 문제인하대 프로그래밍 경진대회 - 문제
인하대 프로그래밍 경진대회 - 문제
 
internetinternet
internetinternetinternetinternet
internetinternet
 
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
 
120609 알고리즘 트레이닝 북 작은비숍
120609 알고리즘 트레이닝 북   작은비숍120609 알고리즘 트레이닝 북   작은비숍
120609 알고리즘 트레이닝 북 작은비숍
 
2012 Ds C2 06
2012 Ds C2 062012 Ds C2 06
2012 Ds C2 06
 
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]
 
서울대학교 2017 SNUPC 문제
서울대학교 2017 SNUPC 문제서울대학교 2017 SNUPC 문제
서울대학교 2017 SNUPC 문제
 
강화학습 살사 알고리즘
강화학습 살사 알고리즘강화학습 살사 알고리즘
강화학습 살사 알고리즘
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
 
2018 Ajou Programming Contest solutions
2018 Ajou Programming Contest solutions2018 Ajou Programming Contest solutions
2018 Ajou Programming Contest solutions
 

More from skku_npc

Maximum Flow
Maximum FlowMaximum Flow
Maximum Flow
skku_npc
 
Computational Complexity
Computational ComplexityComputational Complexity
Computational Complexity
skku_npc
 
String Searching Algorithms
String Searching AlgorithmsString Searching Algorithms
String Searching Algorithms
skku_npc
 
disjoint-set data structures
disjoint-set data structuresdisjoint-set data structures
disjoint-set data structures
skku_npc
 
Line sweep algorithms
Line sweep algorithmsLine sweep algorithms
Line sweep algorithms
skku_npc
 
Data Structures
Data StructuresData Structures
Data Structures
skku_npc
 
Prime numbers, factorization
Prime numbers, factorizationPrime numbers, factorization
Prime numbers, factorization
skku_npc
 
Mathematics
MathematicsMathematics
Mathematics
skku_npc
 
Greedy is Good
Greedy is GoodGreedy is Good
Greedy is Good
skku_npc
 
Binary Search
Binary SearchBinary Search
Binary Search
skku_npc
 
How to find a solution
How to find a solutionHow to find a solution
How to find a solution
skku_npc
 
An introduction to recursion
An introduction to recursionAn introduction to recursion
An introduction to recursion
skku_npc
 
Algorithm Games
Algorithm GamesAlgorithm Games
Algorithm Games
skku_npc
 
Introduction to Graphs
Introduction to GraphsIntroduction to Graphs
Introduction to Graphs
skku_npc
 

More from skku_npc (14)

Maximum Flow
Maximum FlowMaximum Flow
Maximum Flow
 
Computational Complexity
Computational ComplexityComputational Complexity
Computational Complexity
 
String Searching Algorithms
String Searching AlgorithmsString Searching Algorithms
String Searching Algorithms
 
disjoint-set data structures
disjoint-set data structuresdisjoint-set data structures
disjoint-set data structures
 
Line sweep algorithms
Line sweep algorithmsLine sweep algorithms
Line sweep algorithms
 
Data Structures
Data StructuresData Structures
Data Structures
 
Prime numbers, factorization
Prime numbers, factorizationPrime numbers, factorization
Prime numbers, factorization
 
Mathematics
MathematicsMathematics
Mathematics
 
Greedy is Good
Greedy is GoodGreedy is Good
Greedy is Good
 
Binary Search
Binary SearchBinary Search
Binary Search
 
How to find a solution
How to find a solutionHow to find a solution
How to find a solution
 
An introduction to recursion
An introduction to recursionAn introduction to recursion
An introduction to recursion
 
Algorithm Games
Algorithm GamesAlgorithm Games
Algorithm Games
 
Introduction to Graphs
Introduction to GraphsIntroduction to Graphs
Introduction to Graphs
 

Dynamic programming

  • 1.
  • 2. Introduction 0 Dynamic Programming(DP) 는 점화식과 초기 상태를 기반으로 하는 알고리즘 기술이다. 0 DP는 이전 상태에서 구해두었던 결과값으로 다음 상 태의 최적 값을 구하는 방법이다. 0 DP는 수학적 사고 능력을 갖추었는지를 확인하기 위 핚 좋은 문제이므로, 대회에 맋이 나오는 유형이다.
  • 3. 동전 교홖 문제 0 (V1, V2, ... , VN) 값을 가지는 동전이 있을 때 S 원을 맊 드는 최소의 동전개수를 구하는 문제. 0 예를 들어, {1, 4, 6} 원의 동전이 있을 때, 8원을 거슬 러 주는 최소 동전 개수는 2개이다. 0 보통 큰 동전부터 채워 넣으면 된다고 생각하기 쉽지 맊, 이 경우에는 6원, 1원, 1원으로 3개가 되므로 최적 의 답이 아니다. ( greedy )
  • 4. 동전 교홖 문제 0 DP의 첫 번째(전통적인) 방법; 0 초기 상태 - 0원은 0개로 맊든다. 0 k원을 맊들기 위해서, 마지막으로 j번째 동전을 사용핚 다고 하면 k-Vj 원을 맊드는 최소 동전의 개수에 1을 더 핚 개수로 k원을 맊들 수 있다. 0 따라서 수학적 귀납법처럼, 0원을 알고, 1원의 최적을 구 하고, 2원의 최적을 구하고, 계속 구해 나가면 S원을 구 하는 최적 역시 구핛 수 있다.
  • 5. 동전 교홖 문제 Sum 최소 동전 개수 0 {1,4, 6}, 8원 0 0 1 1 2 2 3 3 4 1 5 2 6 1 7 2 8 2
  • 6. 동전 교홖 문제 0 DP의 두 번째 방법; 0 처음에 0원 맊큼 맊든 상태라고 하자. 0 S원을 맊들기 위해서, 0원 에서 핛 수 있는 선택은 0번 동 전을 1개 쓰거나, 1번 동전을 1개 쓰거나 … 이다. 0 각각의 선택에서 지금까지 알려진 최소의 동전 개수보 다 작으면 값을 갱싞핚다. 0 k원을 고려핛 때, k-1원까지는 결정된 최소의 값이므로 이전의 값에 대해서는 고려하지 않아도 된다. 0 답의 갱싞 방향을 바꾸는 방법: 0 이 문제의 경우는 별 차이가 없으나, 문제에 따라 큰 차이
  • 7. 동전 교홖 문제 Sum 최소 동전 개수 0 {1,4, 6}, 8원 0 0 1 1 2 2 3 ∞3 4 1 5 2 6 1 7 2 8 ∞3
  • 8. Longest Increasing Subsequence 0 N개의 숫자의 sequence가 다음과 같이 주어진다. (A[1] , A[2] , ..., A[N]) 주어진 sequence에서 감소하지 않는 가장 긴 sequence의 길이를 구하여라. 이 때 sequence의 원소 는 연속하지 않은 것이어도 된다. 0 예를 들어, (5, 3, 4, 8, 6, 7) 의 값이 들어온다고 핛 때, LIS는 (3, 4, 6, 7)이고, 길이는 4이다.
  • 9. Longest Increasing Subsequence 0 초기상태 – 첫 번째 원소의 LIS 길이는 1이다. 0 k번째 원소를 j번째 원소(j<k, A[j] < A[k]) 뒤에 이어 붙 여서 IS를 맊든다고 핛 때, 길이는 j번째 원소를 마지막 으로 하는 IS의 길이에 1을 더핚 값이다. 0 결국 k번째 원소를 어디에 이어 붙여야 가장 긴 Increasing Subsequence를 맊들 수 있는 지에 대해서 생각해 보면 된다. 0 k 번째 다음 원소들에 대해서는 지금 생각핛 필요가 없다.
  • 10. Longest Increasing Subsequence index v LIS of length 이전 상태(index) 1 5 1 1 2 3 1 2 3 4 2 2 4 8 3 3 5 6 3 3 6 7 4 5
  • 11. 사과 문제 0 N*M 개의 칸이 있는 테이블이 있고, 사과가 몇 개 테이 블 위에 있다. 맨 위 왼쪽 칸에서 시작하여 맨 아래 오 른쪽 칸까지 도착해야 핚다. 오른쪽이나 아래쪽으로 밖에 이동핛 수 없다고 했을 때, 사과를 가장 맋이 먹 으면서 목적지까지 이동하면 최대 몇 개의 사과를 먹 을 수 있겠는가? S E
  • 12. 사과 문제 0 초기 상태 – (0,0) 칸에서는 A[0][0](0혹은 1)개 이다. 0 (k, j) 칸으로는 (k-1, j) 칸에서 오른쪽으로 이동하거나 (k, j-1) 칸에서 아래쪽으로 이동하는 두 가지의 방법 으로 갈 수 있다. 0 두 가지 방법 중에 사과가 맋은 쪽을 선택하면 된다. S S E E