input: from typing import List
  
  
  def matching_paren(s: str) -> bool:
      """ Function to determine if a string has matching parentheses by using a stack.
      It will return True if all parentheses are properly closed, otherwise it will return False.
  
      >>> matching_paren("a(b)c)")
      False
      >>> matching_paren("[a]{b(c)}")
      True
      """
output:     stack = []
      for char in s:
          if char in "([{":
              stack.append(char)
          elif char in ")]}":
              if not stack:
                  return False
              top = stack.pop()
              if (char == ')' and top != '(') or (char == ']' and top != '[') or (char == '}' and top != '{'):
                  return False
      return len(stack) == 0