inflearn logo
강의

Khóa học

Chia sẻ kiến thức

다이나믹 프로그래밍에서 도무지 이해가 안가는 부분이 있어서 질문드립니다ㅠㅠ

164

ghdtkdgh51

1 câu hỏi đã được viết

0

dp 문제 중 효율적인 화폐 구성이라는 문제가 있는데요.

k개의 화폐로 n원을 만들 때 가작 작은 화폐 개수를 구하는 문제입니다.

예를 들어, k = 2, 3, 5로 구성되어 있고, n = 7, 정답이 a(n)이라면,

7 = 2 + 5이므로, a(7) = 2 개가 되는 문제입니다.

 

여기서 점화식은 a(n) = min( a(n), a(n-k) + 1 ),

a(n-k) + 1: 화폐 k원을 반드시 사용하는 경우를 의미

위의 예시에 점화식을 적용해본다면, 시작 전 a(n)을 모두 INF 값으로 초기화,

a(7) = min( a(7), a(7-2)+1, a(7-3)+1, a(7-5)+1 ) = min( a(7), a(5)+1, a(4)+1, a(2)+1 )

 

여기까지는 이해가 됐는데요,

설명이나 코드를 찾아보면 반복문의 위치가 제가 생각한거랑 반대로 돼있더라구요ㅠㅠ

저는 n에 대한 루프 안에 k의 루프가 와야 위의 점화식과 같은 방식이 된다고 생각했지만,

설명에서는 k = 2일 때 n=0~7까지 a(n)을 쫘르륵 구하고, 그다음 k = 3일 떄 쫘르륵, 마지막 k=7일 때 쭉 구해서 최종답을 구합니다.

 

왜 반복문의 위치가 이렇게 바뀌는 건가요??

아시는 분 답변 주시면 정말 감사하겠습니다ㅠㅠ

 

dp 다이나믹프로그래밍 알고리즘 코테 코딩테스트

Câu trả lời 0

수강평 이벤트

0

23

2

part8 Notion 링크

0

23

1

잠겨버린 사물함 시간초과 관련 질문입니다.

0

27

1

코딩테스트 처음인데 이런 공부방법이어도 괜찮을까요

0

59

2

Climbing Stairs 문제 basecase 생각하는 방법

0

33

1

[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가

2

60

3

itertools, sys같은 STL을 사용할 수 없는 경우 질문드립니다.(백준 11724)

1

34

1

DFS/BFS

1

38

2

3-3 정렬-2 선택정렬 로직

0

39

2

질문 디스코드 관련

0

42

1

링크드 리스트 끝에서 k번째 값 출력하기

0

44

2

LinkedList 과제 Fast, slow 포인터

0

50

2

섹션[6] 66.[출제유형] 거리측정, 최단거리 페이지 오타

0

38

2

투포인터 시간복잡도

0

51

2

수강평 작성 후 자료

0

52

2

노션 링크 질문드립니다!

0

72

3

[문제풀이] network delay time

0

67

2

위상정렬 구현 관련

0

79

3

제네릭 타입 매개변수 제한과 관련한 문의입니다.

0

77

3

강의가 좀 버겁다 느껴질 때 학습방법 문의

1

128

4

dp[x]가 최대값이라고 확신할수 있는 이유

0

44

1

슬랙에 안들어가져요

0

39

1

노션 공유 링크

0

85

2

수업 중간에 내주신 문제는 해답을 알 수 없는걸까요?

0

74

2