공부공간

BOJ - 2294 ) 동전 2 본문

알고리즘/Dynamic Programming

BOJ - 2294 ) 동전 2

개발자가될수있을까? 2020. 1. 30. 20:12

BOJ - 2293) 동전 1의 변형 문제이다. 동전 1의 경우, 주어진 금액을 나타내는 최대의 경우의 수를 출력하는 반면 동전 2의 경우 최소 경우의 수로 해당 금액을 나타내는 문제이다. 주의하여 생각해야할 점은 동전 1과 큰 차이가 없다.

 

1. 동전 1과 같이, 동전의 종류 별 경우의 수를 갱신한다.

2. 경우의 수를 갱신할 때, 배열 d 의 인덱스 값보다 적은 가치의 동전만을 생각한다.

3. 기존의 배열 d의 값과, 도출된 d 의 값을 비교하여, 적은 값을 선택한다.

4. 주어진 k 값이 도출되지 않을 경우(값이 갱신되지 않았을 경우) -1 을 출력한다.

 

d[j] 의 값을 갱신할 때마다 기존의 d[j] 의 값과  배열에서 동전의 가치만큼 뺀 뒤 1을 더해준 값과 비교하여 더 작은 값을 갱신하고, 값이 갱신이 되지 않았다면 -1 을 return 한다. 

ex) i = 1 의 경우, 출력 배열인 d 의 값은 등차가 1인 수열 형태를 띄게 된다. (cost[1] = 1)

i = 2, j= 5 의 경우, min (d[5], d[5 - 5] + 1) 에 따라 d[5] 의 값이 1로 갱신된다.  

 

'알고리즘 > Dynamic Programming' 카테고리의 다른 글

BOJ - 1890 ) 점프  (0) 2020.01.30
BOJ - 11048 ) 이동하기  (0) 2020.01.30
BOJ - 2293) 동전 1  (0) 2020.01.30
BOJ - 1699) 제곱수의 합  (0) 2020.01.29
BOJ - 11052) 카드 구매하기  (0) 2020.01.29
Comments