꾸준히 합시다

백준 파이썬 9012번: 괄호 본문

코딩 테스트 문제 풀이

백준 파이썬 9012번: 괄호

tturbo0824 2021. 3. 10. 00:53

www.acmicpc.net/problem/9012

 

9012번: 괄호

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

www.acmicpc.net

문제 유형: 자료 구조, 문자열, 스택

 

# Solution 1

for _ in range(int(input())):
    a = list(input())
    s = 0
    for i in a:
        if i == "(":
            s += 1
        elif i == ")":
            s -= 1
        if s < 0:
            print("NO")
            break
    if s > 0:
        print("NO")
    elif s == 0:
        print("YES")

문제 유형이 스택으로 분류되어 있었지만 굳이 스택을 사용하지 않아도 풀 수 있었다.

 

  1. 우선 괄호를 문자열로 입력받아 리스트를 생성한다.
  2. 여는 괄호 "("가 나 나오면 s에 1을 더하고 닫는 괄호 ")"가 나오면 1을 빼준다.
  3. 이런 과정에서 -1이 나오면 NO를 출력하고 바로 반복문을 빠져나온다.  닫는 괄호가 여는 괄호의 개수보다 많은 경우로 ))(((와 같은 경우가 이에 해당한다. 
  4. 계산을 마치고 s가 0이라면 YES, 0 이상의 양수라면 NO를 출력해준다. 양수가 나오는 경우는 (((())와 같은 경우이다.
Comments