[백준] 9012번 괄호

거북이·2023년 1월 10일
0

백준[실버4]

목록 보기
3/91
post-thumbnail

💡문제접근

  • 괄호 문자열을 입력받았을 때 만약 "("이 들어온다면 스택에 추가해주고 ")"이 들어온다면 제거해주는 방식으로 코드를 작성했다.
  • ")"이 들어오는 경우 두 가지로 나눠주었다. 만약 스택의 마지막 원소의 값이 "("이 된다면 쌍을 이루어 제거해줄 수 있지만 그렇지 않고 스택이 비어있다면 제거해줄 원소가 없기 때문에 ")"을 스택에 추가해줬다.
  • 위 과정을 계속 반복했을 때 만약 스택이 비어있다면 올바른 괄호 문자열이므로 YES를 출력하고 스택이 비어있지 않다면 올바르지 않은 괄호 문자열이므로 NO를 출력한다.
  • 문제를 맞추고 나서 다른 사람들의 코드를 확인했는데 스택을 쓰면서 pop()을 사용한 코드가 여럿 있었다. 이 부분도 참고해서 보충 공부했다.

💡코드(메모리 : 30616KB, 시간 : 48ms)

T = int(input())
for _ in range(T):
    Parenthesis_String = input()
    stack = []
    for i in Parenthesis_String:
        if i == "(":
            stack.append("(")
        else:
            if stack == []:
                stack.append(i)
            else:
                if stack[-1] == "(":
                    stack.remove(stack[-1])
    if stack == []:
        print("YES")
    else:
        print("NO")

💡소요시간 : 20m

0개의 댓글