뭉지(moonz) 2021. 6. 21. 09:46
반응형

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

 

9012번: 괄호

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

www.acmicpc.net

어려운 문제를 계속 풀어와서 그런지 상대적으로 쉬운 문제도 어렵게 풀고 있었어서 해결하는데 꽤 애를 먹었다..

이 문제는 로직만 생각해내면 쉽게 풀 수 있을 것 같다

 

분류

  • 자료구조
  • 문자열
  • 스택

생각 정리

1. '('의 개수와 ')'의 개수가 같아야한다.

2. '(' 가 나오기 전에 ')'가 나오면 안된다.

'('를 +1로, ')'를 -1로 생각해서
1. sum = 0이 나와야한다.
2. sum이 -1이 되자마자 실패한다.

 

전체 코드

n = int(input())
li = []
for i in range(n):
  li = list(input())
  sum = 0
  for j in li:
    if j == '(':
      sum += 1
    elif j == ')':
      sum -= 1
    if sum < 0:     # '('보다 ')' 먼저 나온 경우 or 더 많이 나온 경우
      print('NO')
      break
  if sum == 0:
    print('YES')
  elif sum > 0:     # '('가 더 많이 나온 경우
    print('NO')
반응형