강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

rere님의 프로필 이미지
rere

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

5. 동전교환(냅색 알고리즘)

가장 큰 값을 뺴는 이유가 궁금합니다.

작성

·

305

0

예를 들어서 1 2 5 로 7원을 거슬러줄때 dp[6] 이나 dp[5]가 아닌 dp[2] 에서 1을 더한값과 비교하는 것은 dp[5] dp[6]에서  더해줄 경우 1 + 2 + 5 + 1  과 같이 2개의 동전이 겹치는 경우가 발생하는 반면 dp[2]에서 더해줄 경우 매 순간마다 오름차순 덧셈으로 정렬이 되어서 겹치는 것을 방지 할수 있기에 최적의 해임을 보장받기 때문인가요????

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

7원을 만들기 위해 5원을 하나 사용한다는 전제하에서 7원에서 5원을 빼고 남은 2원을 만드는데 사용되는 동전의 최소 개수가 dp[2]에 있으니 dp[2]+1(5원 1개 사용) 를 해서 기존 dp[7](7원을 만드는데 사용된 동전의 최소개수)값보다 작으면 바꿔주는 것입니다.

rere님의 프로필 이미지
rere

작성한 질문수

질문하기