From 05b35a498834318e2fc342f94ff9c57548a30e70 Mon Sep 17 00:00:00 2001 From: beurmuz Date: Mon, 6 Jun 2022 07:51:51 +0900 Subject: [PATCH] =?UTF-8?q?#10=2022.06.06=20>=204=EB=B2=88=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=ED=92=80=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/inf/dynamic_programing/4.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/inf/dynamic_programing/4.js diff --git a/src/inf/dynamic_programing/4.js b/src/inf/dynamic_programing/4.js new file mode 100644 index 00000000..b26bb223 --- /dev/null +++ b/src/inf/dynamic_programing/4.js @@ -0,0 +1,27 @@ +'use strict'; +function solution(m, coin) { + let answer = 0; + let dy = Array.from({ length: m+1 }, () => 1000); + dy[0] = 0; + + for(let i = 0; i < coin.length; i++) { // 동전의 종류만큼 반복 + for(let j = coin[i]; j <= m; j++) { + dy[j] = Math.min(dy[j], dy[j-coin[i]]+1); // 기존 금액, coin[i] + } + console.log(dy); // 1원만 / 1,2원 / 1,2,5원 + } + answer = dy[m]; + return answer; +} + +let coinList = [1, 2, 5]; +console.log(solution(15, coinList)); + +/* + 작은 단위에서부터 점차 확대시켜 푸는 방법 + - dy: 거슬러줄 금액의 인덱스 번호가 나오도록 배열 만들어주기 + - 0이 아닌 큰 수로 초기화해주기 + - 인덱스 번호 = 거슬러줄 금액 + - dy[i]는 i금액을 거슬러주는 데 사용된 최소동전의 개수 + - dy[0] = 0 으로 초기화해야 함 +*/ \ No newline at end of file