[白俊]9012号:括弧(Python)



質問する



私の答え

t=int(input()) #1. 테스트케이스 입력받기

for i in range(t): #2. 테스트 케이스 수 만큼 반복
    li=input()   #3. 괄호 문자열 입력 받기
    arr=[]	#4. 배열 초기화
    for j in li: #5. 입력받은 문자열의 문자 접근
        if j=="(": #6. 문자가 ( 라면
            arr.append(j) #배열에 추가한다. 
            
        elif j==")": # 7. 문자가 ) 라면
            if len(arr)!=0 and arr[-1] == "(":#8. 빈배열이 아니고, 배열의 마지막 값이 (인지 확인한다.
                arr.pop() #8-1. 맞다면, 마지막 문자열을 제거한다.(
            else:	#8-2. 아니라면 짝이 없다는 뜻이므로 ) 를 배열에 추가한다.
                arr.append(j)
                
    if len(arr)==0: #9. 배열이 빈 배열이라면 괄호문자열이라는 뜻이므로 yes
        print('YES')
    else:#아니라면, 짝이 안맞는다는 의미이므로 no
        print('NO')
方法
  • "("と")は、カッコ文字列になるペアを構成します.
  • したがって、「(」と「)」の個数は一致しなければならない.
  • "(存在する場合)は、配列にアタッチされます.
    「」の場合は、ペアになるかどうかによって、ポップアップまたは追加すればよい.
  • 配列の長さが0であることは、文字列が括弧文字列(すべて偶数でポップアップ)であることを示し、YES出力を出力し、そうでなければNOを出力する
  • テストケースtを入力します.
  • 個のテストケースを繰り返し、
  • カッコ文字列を入力します.
  • 行ごとに新しい文字列をチェックし、配列を初期化します.
  • 各文字列にアクセスする文字
  • .
  • 文字があれば、条件を分けます.
  • の空の配列ではなく、配列の最後の値を配列に追加します(ペアの場合、ポップアップされます.そうでない場合、ペアリングはありません).
  • 最終的に空の配列であれば括弧文字列を表し、YESでなければNOを出力する.
  • △接着剤がきれいに見えるように、注釈をつけました.いいかどうか分かりませんが....