Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

Younghun Go

BOJ 2294 - 동전 2 본문

알고리즘

BOJ 2294 - 동전 2

고영훈 2020. 9. 6. 12:04

문제


n가지 종류의 동전이 있다. 이 동전들을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그러면서 동전의 개수가 최소가 되도록 하려고 한다. 각각의 동전은 몇 개라도 사용할 수 있다.

사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다.


만약 n가지 종류의 동전이 서로 배수 관계라면 그리디 알고리즘으로 해결이 가능했다.

하지만 배수 관계가 아닌 경우 다이나믹 프로그래밍으로 해결해야한다.

위 문제의 경우 동전이 배수 관계인 경우, 아닌 경우 모두 다루기 때문에 다이나믹 프로그래밍으로 접근한다.

 

1. 처음 접근은 메모이제이션하려는 DP의 정의를 내린다.

    $dp[k]$ : $k$원을 만드는데 동전의 최소 사용 횟수

 

2. 점화식을 세운다

   $dp[k] = min(dp[k-coin[i] + 1)$

  점화식의 의미는 k원에서 현재 가지고 있는 가능한 모든 동전을 빼준 최솟값(min)이다.

    

bottom-up

 

top-down

 

'알고리즘' 카테고리의 다른 글

BOJ 4991 - 로봇 청소기  (0) 2020.09.13
BOJ 10826 - 피보나치 수 4  (0) 2020.09.06
BOJ 1463 - 1로 만들기  (0) 2020.09.02
BOJ 2504 - 괄호의 값  (0) 2020.08.26
BOJ 2493 - 탑  (0) 2020.08.26
Comments