PS/Python

[백준] 9012 - 괄호 (파이썬, Python)

w00se 2021. 9. 30. 22:53

https://pixabay.com/ko/photos/우산-햇빛-여자-비-빛-6239364/

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

 

9012번: 괄호

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

www.acmicpc.net

 

괄호로만 구성된 문자열 중 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(VPS)라고 합니다.

입력으로 주어진 문자열이 VPS인지 확인하는 것이 이 문제의 목표입니다.

 

이 문제는 문자열, 스택 문제로 분류됩니다.

 

저는 스택은 사용하지 않고, 단순히 괄호를 세는 방식으로 해결했습니다.

 

접근 방식

1. VPS인지 검사하기 위해 문자 하나 씩 검사를 수행합니다.

2. vlidator라는 이름의 변수를 사용했으며, '(' 일 때 +1을 하고 ')' 일 때 -1 연산을 수행합니다.

2-1. 만약 반복문 중간에 validator가 음수가 되는 경우가 있다면 반복문을 종료합니다.

3. 반복문이 종료가 된 후 validator가 0이면 YES, 그렇지 않다면 NO를 저장합니다.

 

전체 코드

제출 언어: Python3

시간: 80ms

 

import sys

def solution(ps):
    is_vps = "YES"
    validator = 0

    for c in ps:
        if validator < 0:
            break
        
        if c == "(":
            validator += 1

        else:
            validator -= 1
        
    if validator != 0:
        is_vps = "NO"
    
    return is_vps

if __name__ == "__main__":
    T = int(sys.stdin.readline().strip())

    answer = []

    for _ in range(T):
        ps = sys.stdin.readline().strip()

        res = solution(ps)
        answer.append(res)
    
    for res in answer:
        print(res)

읽어 주셔서 감사합니다 :)

틀린 부분이 있다면 댓글로 편히 알려주세요😊