[백준] 9012번 괄호 _ 문제 풀이



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()))