|
| 1 | +from collections import deque |
| 2 | + |
| 3 | +class Solution: |
| 4 | + """ |
| 5 | + 1. κ°μ₯ ν° μλΆν° μ°¨λ‘λλ‘ λΉΌλ©΄μ νμΈ - νλ¦° νμ΄ |
| 6 | + κ°μ₯ ν° μλΆν° μ°¨λ‘λλ‘ λΉΌλ©΄ μλλ κ²½μ°κ° μμ |
| 7 | + coins = [186,419,83,408], amount = 6249 |
| 8 | + μ΄κ±΄ 419λΆν° μλ λκΉμ§ λΉΌλ λ°©μμΌλ‘ λμ§ μμ, μ¦ μ΅μ μ κΈμ‘μ μ°ΎμμΌ ν¨. |
| 9 | + 그리λ κ°μ λ¬Έμ μΌ λ― |
| 10 | +
|
| 11 | + """ |
| 12 | + """ |
| 13 | + def coinChange(self, coins: List[int], amount: int) -> int: |
| 14 | + if amount == 0: |
| 15 | + return 0 |
| 16 | +
|
| 17 | + coins.sort(reverse=True) |
| 18 | + result = 0 |
| 19 | + for coin in coins: |
| 20 | + while amount >= coin: |
| 21 | + amount -= coin |
| 22 | + result += 1 |
| 23 | + |
| 24 | + if amount: |
| 25 | + return -1 |
| 26 | + return result |
| 27 | + """ |
| 28 | + """ |
| 29 | + - BFSλ₯Ό μ¬μ©νμ¬ "λμ ν©"μ 0μμ μμν΄ amountκΉμ§ λλ¬νλ μ΅μ λ¨κ³λ₯Ό νμ |
| 30 | + - νμ μμ: (cnt, total) |
| 31 | + cnt : νμ¬κΉμ§ μ¬μ©ν λμ κ°μ |
| 32 | + total : νμ¬κΉμ§ λ§λ ν© |
| 33 | + - visited μ§ν©μΌλ‘ μ΄λ―Έ λ°©λ¬Έν ν©μ μ€λ³΅ νμνμ§ μκ² ν¨ |
| 34 | + - 첫 λ²μ§Έλ‘ amountμ λλ¬νλ μκ°μ΄ μ΅μ λμ κ°μ (BFS νΉμ±μ) |
| 35 | + |
| 36 | + μκ° λ³΅μ‘λ: |
| 37 | + - μ΅μ
μ κ²½μ° λͺ¨λ ν©(0 ~ amount)μ νμνλ©°, |
| 38 | + κ° ν©μμ μ΅λ len(coins)κ°μ μλ‘μ΄ μνλ₯Ό νμ λ£μ |
| 39 | + - O(amount Γ n), n = len(coins) |
| 40 | +
|
| 41 | + κ³΅κ° λ³΅μ‘λ: |
| 42 | + - visited μ§ν©: μ΅λ amount+1 ν¬κΈ° |
| 43 | + - ν(queue): μ΅μ
μ κ²½μ° O(amount Γ n) μν μ μ₯ κ°λ₯ |
| 44 | + - O(amount) |
| 45 | + """ |
| 46 | + def coinChange(self, coins: List[int], amount: int) -> int: |
| 47 | + def bfs(): |
| 48 | + queue = deque([(0, 0)]) |
| 49 | + visited = set() |
| 50 | + while queue: |
| 51 | + cnt, total = queue.popleft() |
| 52 | + if amount == total: |
| 53 | + return cnt |
| 54 | + if total in visited: |
| 55 | + continue |
| 56 | + visited.add(total) |
| 57 | + |
| 58 | + for coin in coins: |
| 59 | + if coin + total <= amount: |
| 60 | + queue.append((cnt + 1, total + coin)) |
| 61 | + return -1 |
| 62 | + |
| 63 | + return bfs() |
0 commit comments