baekjoon #9012 괄호

5835 단어 pythonstackTILTIL

내 풀이

num = int(input())
for _ in range(num):
    str_in = input()
    if (str_in[0] == '(') and (str_in[-1] == ')'):
        l_c = 0
        r_c = 0
        for letter in str_in:
            if letter == '(':
                l_c += 1
            elif letter == ')':
                r_c += 1           
            if r_c > l_c:
                break
        if l_c == r_c:
                print('YES')
        else:
            print('NO')
    else:
        print('NO')

다른 풀이

num = int(input())
for _ in range(num):
    str_ = input()
	stack = 0
    for char_ in str_:
        if letter == '(':
        	stack += 1
        else:   # letter = ')'
            stack -= 1           
            if stack < 0:
                break
    if stack == 0:
        print('YES')
    else:
        print('NO')

하나의 카운팅 변수를 사용하고
')' 괄호일 경우 -1을 카운트 함으로써 항상 '(' 괄호를 우선으로 하도록 한다.

좋은 웹페이지 즐겨찾기