티스토리 뷰

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 ))




'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 4872.반복문자 지우기  (0) 2021.02.23
[SWEA] 4866. 괄호검사  (0) 2021.02.23
[SWEA] 2005. 파스칼의 삼각형  (0) 2021.02.23
[SWEA] 1289. 원재의메모리복구  (0) 2021.02.22
[SWEA] 1234. 비밀번호  (0) 2021.02.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함