[백준] 9012-괄호

kiteday·2025년 7월 9일
0

코딩테스트

목록 보기
5/46

문제 바로가기

num = int(input())

for i in range(num):
    words= input()
    stack = []
    
    for word in words:
        if word == "(":
            stack.append("()")
        elif word == ")":
            if len(stack) == 0:
                print("NO")
                break
            else:
                stack.pop()
    else:
        if len(stack) != 0:
            print("NO")
        else:
            print("YES")

처음에는 그냥 단순하게 '('의 개수랑 ')'만 맞으면 되는거 아냐?라는 생각으로 짰는데 당연히 안된다.
왜냐하면 이 경우는 )( 이런 순서의 예시를 잡을 수 없기 때문.

결국 스택으로 해결했는데 마지막 else부분에서 시간이 제일 많이 걸렸다. 다른 언어에서 얻은 습관이 있어서 break에 걸리지 않을 경우에 대한 처리를 못했기 때문..

마지막 else는 위 break에 걸리지 않을 경우 실행한다. 이게 제일 시간 많이 잡아먹었다.

참고

https://python101.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%ACPython%EC%9D%98-for-%EB%AC%B8-break-continue-else-%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C#google_vignette

profile
공부

0개의 댓글