[BOJ]9012号括弧


これはStackを利用した問題です.

  • 解答:カッコが正しいだけがYESで、そうでなければ出力Noの問題です.つまり、アレイにPushがある場合はPOPを行い、カッコが正しい場合はスタックを空にする必要があります.)で入力した場合は、まずそれをポップアップし、それをポップアップします.これにより、空の配列が発生するため、YESが出力されます.POPを作る前にレイアウトが空かどうかを確認しましょう!!レイアウトが空の場合、POPを作るとエラーが発生するからです.

  • 感じた点:最初は「(」文字列と「)」文字列を一つ一つ加算して、trueならfalseにして、これではだめ!xがVPSなら、それを1つに変えなければならないからです.VPS=()ということは、会計は「(」「)」ということなのでダメ!
  • var T = Int(readLine()!)!
    var stack:[String.Element] = []
    for _ in 0..<T {
        var breack = readLine()!
        for i in breack {
            if i == "(" || stack.last == ")" {
                stack.append(i)
            } else {
                if !stack.isEmpty {
                    stack.popLast()
                } else {
                    stack.append(i)
                }
            }
        }
        if stack.isEmpty {
            print("YES")
            stack = []
        } else {
            print("NO")
            stack = []
        }
    }