다이나믹 프로그래밍에서 도무지 이해가 안가는 부분이 있어서 질문드립니다ㅠㅠ
165
1 asked
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일 때 쭉 구해서 최종답을 구합니다.
왜 반복문의 위치가 이렇게 바뀌는 건가요??
아시는 분 답변 주시면 정말 감사하겠습니다ㅠㅠ
Answer 0
coders 사이트 로그인이 안돼요
0
25
2
노션 접근권
0
20
1
재귀 관련
0
25
1
replit에서 developer frameworks가 안보여요
0
31
2
연결리스트 삽입삭제 O(1) 아닌가요?
0
20
2
코딩 테스트 All-in-One(Java)' 강의 노션 교재 권한문의
0
29
1
태어난김에 세계일주 시간 초과
0
25
1
커리큘럼 중 정렬 관련 질문
0
21
1
코테 사이트 로그인 불가
0
31
1
실습 권한이 없네요··· 이건 ··· 좀··· 401 에러떠요
0
31
3
백준 사이트 서버종료
1
30
0
[할인쿠폰] 코테의 바이블[JAVA] 50% 할인 쿠폰 관련
0
26
1
수강평 이벤트
0
36
2
part8 Notion 링크
0
33
1
잠겨버린 사물함 시간초과 관련 질문입니다.
0
31
1
코딩테스트 처음인데 이런 공부방법이어도 괜찮을까요
0
73
2
Climbing Stairs 문제 basecase 생각하는 방법
0
34
1
[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가
2
73
3
itertools, sys같은 STL을 사용할 수 없는 경우 질문드립니다.(백준 11724)
1
42
1
DFS/BFS
1
47
2
3-3 정렬-2 선택정렬 로직
0
43
2
질문 디스코드 관련
0
50
1
링크드 리스트 끝에서 k번째 값 출력하기
0
47
2
LinkedList 과제 Fast, slow 포인터
0
50
2

