https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
내가 처음에 짠 코드
n = int(input())
for i in range(n):
x = list(input())
l_cnt = 0
r_cnt = 0
for i in range(len(x)):
if x[i] == '(':
l_cnt += 1
else :
r_cnt += 1
if l_cnt == r_cnt :
if x[-1] == ')':
print('YES')
else :
print('NO')
그냥 단순하게 ( ) 의 개수가 같은지, 끝이 )로 끝나는지만 체크함.
테스트케이스 1은 잘 돌아갔는데, 2에서 ())(()에 걸려버렸다.
어떻게하지 고민했는데 stack을 이용하면 쉬운거였음
(가 들어올때마다 stack에 쌓고, )가 들어오면 pop으로 빼기
for - else문을 활용하여 두가지 조건을 걸고 풀었다.
1. 반복문이 다 돌았는데, stack이 비어있으면 YES / 아니면 NO
2. stack 안에 들어있는 (가 없는데 ) 가 들어와서 pop해야 하면 NO
n = int(input())
for i in range(n):
x = list(input())
stack = []
for i in range(len(x)):
if x[i] == '(':
stack.append(x[i])
else :
if len(stack) != 0:
stack.pop()
else :
print('NO')
break
else :
if len(stack) == 0:
print('YES')
else :
print('NO')
'백준 문제풀이 > 자료구조' 카테고리의 다른 글
[백준] 2493 탑 - python (0) | 2023.01.27 |
---|---|
[백준] 1874 스택수열 - python (0) | 2023.01.27 |
[백준] 10828 스택 -python (0) | 2023.01.27 |
[백준] 2164 카드2 -python (0) | 2023.01.27 |
[백준] 1158 요세푸스 문제 - python (0) | 2023.01.25 |