new_contents: """
  A bracket is considered to be any one of the following characters: (, ), {, }, [, or ].
  
  Two brackets are considered to be a matched pair if the an opening bracket (i.e., (, [, or {) occurs to the left of a closing bracket (i.e., ), ], or })
  of the exact same type. There are three types of matched pairs of brackets: [], {}, and ().
  
  A matching pair of brackets is not balanced if the set of brackets it encloses are not matched.
  For example, {[(])} is not balanced because the contents in between { and } are not balanced.
  The pair of square brackets encloses a single, unbalanced opening bracket, (, and the pair of parentheses encloses a single, unbalanced closing square bracket, ].
  
  By this logic, we say a sequence of brackets is balanced if the following conditions are met:
  
  It contains no unmatched brackets.
  The subset of brackets enclosed within the confines of a matched pair of brackets is also a matched pair of brackets.
  Given  strings of brackets, determine whether each sequence of brackets is balanced. If a string is balanced, return YES. Otherwise, return NO.
  
  Function Description
  
  Complete the function isBalanced in the editor below. It must return a string: YES if the sequence is balanced or NO if it is not.
  
  isBalanced has the following parameter(s):
  
  s: a string of brackets
  Input Format
  
  The first line contains a single integer , the number of strings.
  Each of the next  lines contains a single string , a sequence of brackets.
  
  Constraints
  
  , where  is the length of the sequence.
  All chracters in the sequences ∈ { {, }, (, ), [, ] }.
  Output Format
  
  For each string, return YES or NO.
  
  Sample Input
  
  3
  {[()]}
  {[(])}
  {{[[(())]]}}
  Sample Output
  
  YES
  NO
  YES
  """
  
  #!/bin/python3
  
  import math
  import os
  import random
  import re
  import sys
  
  BRACKET_MAP = {
      "{": "}",
      "[": "]",
      "(": ")"
  }
  
  # Complete the isBalanced function below.
  def isBalanced(s):
      openBrackets = []
      length = len(s)
      if length % 2 != 0:
          return "NO"
      for char in s:
          if char in BRACKET_MAP:
              openBrackets.append(BRACKET_MAP[char])
          else:
              if openBrackets == [] or char != openBrackets[-1]:
                  return "NO"
              openBrackets.pop()
      if openBrackets == []:
          return "YES"
      return "NO"
  
  if __name__ == '__main__':
      fptr = open(os.environ['OUTPUT_PATH'], 'w')
  
      t = int(input())
  
      for t_itr in range(t):
          s = input()
  
          result = isBalanced(s)
  
          fptr.write(result + '\n')
  
      fptr.close()
  
subject: Add solution to balanced brackets