Algorithm/Inflearn

[알고리즘/인프런] 동전 교환(냅색 알고리즘)

2023. 6. 20. 23:11
목차
  1. 문제
  2.  
  3. 풀이
반응형

문제


다음과 같이 여러 단위의 동전들이 주어져 있을때 거스름돈을 가장 적은 수의 동전으로 교환 해주려면 어떻게 주면 되는가? 각 단위의 동전은 무한정 쓸 수 있다.

 

풀이


function solution(m, coin) {
  let dy = Array.from({ length: m + 1 }, () => 1000); // 가장 작은 동전으로 금액 m 만들 때보다 크게 설정
  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); // 현재 원소에서 사용하는 동전 값만큼 뺀 금액을 만들 때 필요한 동전 개수 + 1
    }
  }
  return dy[m];
}

냅색 알고리즘

- i번째 물건을 넣었을 때와 넣지 않았을 때, 둘 중 가치가 더 큰 것을 가져오면 되는 것

- 이 문제에서는 각 동전을 사용했을 때와 사용하지 않았을 때를 비교해 더 적은 동전의 수를 만드는 값을 구함

 

여기서 dy[i]는 i 원을 거슬러 줄 때 필요한 최소 동전의 개수를 의미한다. dy[0]은 0원을 만드는 방법이니 0이다. 이것은 i-coin[i](현재 금액 i에서 사용하는 동전 coin[i]만큼을 뺀 금액)원을 만들기 위해 필요한 동전의 최소 개수에다 1을 더해서 구할 수 있다.

 

예를 들어, coin[i]가 5 여서 5원짜리를 사용한다고 가정해보자. 그 때 dy[5]는 어짜피 5원을 하나 사용할 것이기 때문에 dy[0], 즉 0원을 거슬러주는 방법에다 5원을 하나 사용하니 1을 더해준 값이다. 마찬가지로 dy[10] = dy[5] +1 이 된다. 여기서 1은 사용한 5원짜리 동전 1개이고, dy[5]는 그 동전을 사용하기 전의 금액을 만들기 위한 최소 동전 개수이다.

반응형
저작자표시 (새창열림)

'Algorithm > Inflearn' 카테고리의 다른 글

[알고리즘/인프런] 최대 점수 구하기(냅색 알고리즘, dp)  (0) 2023.06.21
[알고리즘/인프런] 계단 오르기  (0) 2023.06.21
[알고리즘/인프런] 최대 부분 증가수열(LIS, dp)  (0) 2023.06.19
[알고리즘/인프런] K번째 큰 수  (0) 2023.05.30
[알고리즘/인프런] 졸업 선물  (1) 2023.05.30
  1. 문제
  2.  
  3. 풀이
'Algorithm/Inflearn' 카테고리의 다른 글
  • [알고리즘/인프런] 최대 점수 구하기(냅색 알고리즘, dp)
  • [알고리즘/인프런] 계단 오르기
  • [알고리즘/인프런] 최대 부분 증가수열(LIS, dp)
  • [알고리즘/인프런] K번째 큰 수
개발자 김비숑
개발자 김비숑
프론트엔드 개발자를 준비하고 있는 김비숑입니다.
반응형
개발자 김비숑
김비숑과 프론트엔드
개발자 김비숑
전체
오늘
어제
  • 분류 전체보기 (118)
    • FrontEnd (24)
      • HTML&CSS (1)
      • JavaScript (3)
      • TypeScript (8)
      • React (8)
      • Test (4)
    • CS (1)
    • Algorithm (83)
      • BOJ (42)
      • Inflearn (26)
      • Programmers (15)
    • Git (0)
    • Projects (4)
    • Translation (1)
    • Others (0)
      • Reviews (4)
      • About Me (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

인기 글

최근 글

hELLO · Designed By 정상우.
개발자 김비숑
[알고리즘/인프런] 동전 교환(냅색 알고리즘)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.