input: Write a function to determine the minimum number of coins needed to make a given change.
  assert makeChange([1, 2, 5], 11) == [1, 5, 5]
  assert makeChange([1, 3, 4], 6) == [3, 3]
  assert makeChange([2], 3) == None
output: def makeChange(coins, amount):
      dp = [None] * (amount + 1)
      dp[0] = []
  
      for i in range(1, amount + 1):
          min_combination = None
          for coin in coins:
              if i >= coin and dp[i - coin] is not None:
                  combination = dp[i - coin] + [coin]
                  if min_combination is None or len(combination) < len(min_combination):
                      min_combination = combination
          dp[i] = min_combination
  
      return dp[amount]