알고리즘/SWEA

[SWEA] 1218. 괄호 짝짓기

빙빙 2021. 2. 23. 14:35

1. 왼쪽 괄호들은 스택에 저장한다

2. 오른쪽 괄호들을 만난다면 스택에 저장된 것을 맨뒤에서 하나씩 pop()하면서 검사해준다.

3. 짝이 맞으면 1 아니면 0


T = 10
for tc in range(1, T+1):
    N = int(input())
    arr = input()

    stack1 = []
    result = 1
    #왼쪽괄호들을 다 스택에 저장하고 오른쪽 괄호를 만난다면 pop해서 비교
    for i in range(N):
        if arr[i] == '(' or arr[i] == '{' or arr[i] == '[' or arr[i] == '<':
            stack1.append(arr[i])

        if arr[i] == ')':
            if len(stack1) > 0 and stack1.pop() != '(':
                result = 0
                break
        if arr[i] == '}':
            if len(stack1) > 0 and stack1.pop() != '{':
                result = 0
                break
        if arr[i] == ']':
            if len(stack1) > 0 and stack1.pop() != '[':
                result = 0
                break
        if arr[i] == '>':
            if len(stack1) > 0 and stack1.pop() != '<':
                result = 0
                break



    print("#{} {}".format(tc,result ))