본문 바로가기

코딩테스트/Python

[Python] 백준 #9012 - 괄호

문제


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

 

9012번: 괄호

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

www.acmicpc.net

 

 

 

풀이


import sys
input=sys.stdin.readline

n = int(input())
for _ in range(n):
    arr = list(input()[:-1])
    s = []
    for a in arr:
        if a=='(':
            s.append(a)
        else:
            if len(s) :s.pop()
            else:
                print("NO")
                break
    else:
        print("NO") if len(s) else print("YES")

 

스택을 사용하여 풀었다.

) 가 나오면 스택에 있는 ( 와 비교하면서 풀었다.

 

  1. 시간을 줄이기 위해 sys.stdin.readline 선언
  2. 괄호 문자열을 입력받으면 제일 뒤 개행문자를 제거하고 list로 만들어준다.
  3. 스택 s 선언
  4. 리스트로 만든 괄호 문자열을 반복문으로 돌려준다
  5. ( 가 나오면 s에 더해준다.
  6. ) 가 나오고 스택에 (이 존재하면 즉, 길이가 1이상이면 스택에 있는 것을 pop()
  7. 길이가 0이면 유효하지 않은 괄호이기 때문에 NO 출력
  8. 반복문이 끝났을때 s에 ( 이 있으면 NO 출력, 없으면 YES 출력

 

느낀점


알고리즘 중에서 스택이 제일 재밌는거같다!ㅎㅎ 왤까 ㅠ 쉬워서 그런걸까