미소를뿌리는감자의 코딩

[백준 2024/02/06] 9012번 괄호 - python ver. 본문

코딩 테스트/백준

[백준 2024/02/06] 9012번 괄호 - python ver.

미뿌감 2024. 2. 6. 15:23
728x90

https://www.acmicpc.net/problem/9012

 

9012번: 괄호

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

www.acmicpc.net

 

1. 접근 방법

이번 문제는 저번에 Java로 풀었던 문제이다. 하지만, python ver. 으로 다시 풀어보았다.

확실히 저번에 풀었던 문제여서, 빠르게 처리할 수 있었다. 뭔가 성장한 기분이어서 뿌듯했다.

rough draft

왼쪽 괄호가 읽히는 경우, stack에다가 넣어주었다.

만약 오른쪽 괄호가 읽힌다면 stack에서 pop을 해주었다. 해당 과정 중에서, pop을 할 왼쪽 괄호가 없다면, NO를 return 해주었다.

 

괄호에 대한 처리가 완료하고 난 이후에도, stack에 값이 남아있다면 짝이 지어질 오른쪽 괄호가 없는 것이기 때문에, 해당 경우에도 NO를 return 해주었다.

 

다시 정리해보면,

 

[1] ) 출력 시, stack 에서 pop

         stack 이 비어있다면 -> NO

[2] ( 출력 시, stack에 넣기

---- for문 완료 후 ----

[1] stack 이 비어있지 않다면 -> NO

[2] stack 이 비어있다면 (다 짝이 지어졌다면) -> YES

 

2. 코드

def vps(s):
    left = []
    for i in s:
        if i=='(':
            left.append(1)
        else:
            if len(left)==0:
                return "NO"
            else:
                left.pop()
        #print(left)
    if len(left)!=0:
        return "NO"
    return "YES"


n = int(input())

for i in range(n):
    str = input()
    print(vps(str))
728x90