[DP] Coin Change
2021. 3. 31. 16:54ㆍ프로그래밍-코딩테스트/LeetCode
coins배열의 원소들을 합하여 amount로 입력된 값을 만들려고 한다.(원소들은 중복 사용이 가능하다)
이때 만들 수 있는 갯수가 가장 적은 케이스를 찾아 해당 갯수를 리턴한다.
만드는것이 불가능하다면 -1을 리턴한다.
전형적인 DP문제로, amount만큼을 갯수로 가진 배열을 만들어 각 부분의 solution을 구해 global과 비교하면 된다.
dp라는 배열을 만들고 amount가 0일때의 값을 입력한다.
그 뒤, 0부터 amount까지에 대한 Loop를 돌면서 coin의 각 원소와 비교한다
예컨데 [ 1, 2, 5 ]인 coins에 대해 i가 5라고 해보자.
일단 coin이 i보다 커지면 의미가 없으므로, i는 coin보다 항상 크거나 같아야 한다.
이 조건을 만족하는 경우에 대해, 해당 coin 값을 뺀 local solution에 1을 더한 것중 최소 값을 구한다.
모든 dp[ i ]에 대한 값을 차곡차곡 구해서 amount를 구하면 된다.
'프로그래밍-코딩테스트 > LeetCode' 카테고리의 다른 글
[DP] Longest Palindromic Substring (0) | 2021.03.31 |
---|---|
[Array] 3Sum (0) | 2021.03.31 |
[Recursion] Letter Combinations of a Phone Number (0) | 2021.03.31 |
[Array] Sort Colors (0) | 2021.03.31 |
[Tree] Construct Binary Tree from Preorder and Inorder Traversal (0) | 2021.03.31 |