문제 링크
https://www.acmicpc.net/problem/9012
문제
문제 풀이
( )은 무조건 쌍으로 나와야하므로, (가 등장하면 무조건 )로 마무리가 되어야 한다.
따라서 입력받은 문자열에 대해 list로 변환 후 한 문자씩 검사를 하여,
(가 나타나면 sum에 1을 더하고, )가 나타나면 1을 빼주는 조건문을 실행한다.
이때, ( ) ) 와 같이 ( 의 개수보다 ) 의 개수가 많아질 경우, 조건을 충족시킬 수 없게되므로
NO를 반환하고 for문을 빠져나온다.
for문이 끝난 후 sum이 양수일 경우 (를 닫는 )가 부족하다는 뜻이므로 NO를 반환,
0일 경우 모든 괄호가 쌍으로 닫혔다는 의미이므로 YES를 반환한다.
T = int(input())
for i in range(T):
st = input()
stlist = list(st)
sum = 0
for i in stlist:
if i == '(':
sum += 1
elif i == ')':
sum -= 1
if sum < 0:
print('NO')
break
if sum > 0:
print('NO')
elif sum == 0:
print('YES')
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 10845 큐 (파이썬 python) (0) | 2022.01.23 |
---|---|
[백준] 10799 쇠막대기 (파이썬 python) (0) | 2022.01.23 |
[백준] 10828 스택 (파이썬 python) (0) | 2022.01.23 |
[백준] 11004 K번째 수 (파이썬 python) (0) | 2022.01.21 |
[백준] 11053 가장 긴 증가하는 부분 수열 (파이썬 python) (0) | 2022.01.21 |