[アルゴリズム]白駿9012号かっこ(Python)

4086 ワード

白駿#9012


問題のショートカット

質問する


括弧文字列(Parentosis String,PS)は、2つの括弧記号「(」と「)」からなる文字列である.ここで、括弧形状が正しい文字列を正しい括弧文字列(Valid PS,VPS)と呼ぶ.括弧の「()」文字列をデフォルトVPSと呼びます.xがVPSであれば、括弧に入れる新しい文字列「(x)」もVPSとなります.また,2つのVPSxとyを接続した新しい文字列xyもVPSとなる.例えば、「()()()」「((())」はVPSであるが、「()(」()、「()()())」と「(((()」はVPSではなく文字列である.
入力した括弧文字列がVPSであるかどうかを判断し、結果をYESとNOとして表す必要があります.

I/Oルール


1.入力
  • 入力データは標準入力を採用している.T個のテストデータとして入力します.入力された最初の行は、入力データの数を表す整数Tを与える.各テストデータの最初の行にはカッコ文字列があります.カッコ文字列の長さは2または50以下です.
    2.出力
  • 出力は標準出力を採用している.カッコ文字列が正しいカッコ文字列(VPS)である場合は、「YES」または「NO」を行単位で出力します.
  • 質問へのアクセス


    この問題は、正しいカッコ文字列(VPS)の承認を得るには、カッコ「(」,「)」のペアが必要です.また、所与の文字列では、左かっこと右かっこの数が一致しなければならないため、append法とpop法を用いて長さ測定により出力することができる.

    問題解決(Python)

    
    num = int(input())
    
    for i in range(num):
      input_data = input()
      bracket = []
    
      for j in input_data:
        if j == "(":
          bracket.append(j)
        elif j == ")":
          if len(bracket) != 0 and bracket[-1] == "(":
            bracket.pop()
          else:
            bracket.append(")")
            break
    
      if len(bracket) == 0:
        print("YES")
      else:
        print("NO")