2023.04.18 풀이
import sys
input=sys.stdin.readline
t=int(input())
for j in range(t):
res=0
s=input().rstrip()
for i in range(len(s)):
if s[i]=="(":
res+=1
else:
if res>0:
res-=1
else:
print('NO')
break
if i==len(s)-1 and res==0:
print("YES")
elif i==len(s)-1:
print("NO")
- 스택은 스택인데 실제로 push, pop을 하지않고 덧셈으로 계산
- yes, no의 조건문 헷갈렸음
2023.05.09 풀이
import sys
input=sys.stdin.readline
n=int(input())
for _ in range(n):
s=list(map(str, input().rstrip()))
k=0
for i in s:
if i=="(":
k+=1
else:
if k>=1:
k-=1
else:
k=1
break
if k==0:
print('YES')
else:
print("NO")
다른 풀이
T = int(input())
for i in range(T):
s = input()
while '()' in s:
s = s.replace('()',"")
if s == '':
print('YES')
else:
print('NO')
- for 문 다 돌고 난 뒤에 res 값으로 판별해도 가능.
T = int(input())
for i in range(T):
data = input()
s = list(data)
sum = 0
for i in s:
if i == '(':
sum += 1
elif i == ')':
sum -= 1
if sum < 0:
print('NO')
break
if sum > 0:
print('NO')
elif sum == 0:
print('YES')
T = int(input())
for i in range(T):
stack = []
a=input()
for j in a:
if j == '(':
stack.append(j)
elif j == ')':
if stack:
stack.pop()
else:
print("NO")
break
else:
if not stack:
print("YES")
else:
print("NO")
check point
- 다른 풀이-1에서처럼 문자열 구현 방법도 생각해보기
- 다른 풀이-2에서 처럼 for문을 다 돈 이후에 따져도 상관없음