1. 문제
https://www.acmicpc.net/problem/9012
2. 풀이
2.1. 내 풀이
def solution(this):
arr = []
for x in this:
if x == '(':
arr.append(x)
else:
if len(arr) == 0:
return 'NO'
else:
arr.pop()
return 'YES' if len(arr) == 0 else 'NO'
total = int(input())
for _ in range(total):
this = str(input())
print(solution(this))
2.2. 숏코딩
2.2.1. 숏코딩 코드1
for i in range(int(input())):
a=0
for c in input():
a += 1 if c=='(' else -1
if a < 0:
break
print("YES" if a==0 else "NO")
2.2.2. 숏코딩 코드2
jhmoon2000님의 풀이를 가져왔습니다. 한 줄로 exec 을 이용한 풀이로 ()를 25번 제거하여 남은 배열의 길이를 이용하여 답을 출력하였습니다. 엄청난 아이디어인것 같네요.
exec(("print(['NO','YES'][not input()"+".replace('()','')"*25+"]);")*int(input()))
PREVIOUS[백준] 10773번 제로 _ 문제 풀이