티스토리 뷰

728x90
반응형

문제

www.acmicpc.net/problem/9012

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

코드

T = int(input())

for i in range(T):
    stack = []
    a=input()
    for j in a:
        if j == '(':
            stack.append(j)
        elif j == ')':
            if stack:
                stack.pop()
            else: # 스택에 괄호가 없을경우 NO
                print("NO")
                break
    else: # break문으로 끊기지 않고 수행됬을경우 수행한다
        if not stack: # break문으로 안끊기고 스택이 비어있다면 괄호가 다 맞는거다.
            print("YES")
        else: # break안 걸렸더라도 스택에 괄호가 들어있다면 NO이다.
            print("NO")

 

코드설명

'(' 괄호가 들어오면 stack에 넣어준다.

')' 괄호가 들어왔을때는 stack을 검사해 비어있다면 NO를 출력하고 break해주고 만약 비어있지 않다면 pop을 한번 해준다.

 

for-else 문으로 for문에서 한번도 break가 난적이 없다면 else문을 실행하는데 그럴경우 stack이 비어있다면 괄호가 모두 짝이 맞은 경우이기 때문에 YES를 출력한다.

else 문이 실행해도 스택안에 괄호가 남아있다면 짝이 안맞는 것이기 때문에 NO를 출력한다.

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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