백준 9012 파이썬 문제풀이.

2023. 8. 7. 15:52코딩테스트

반응형
import sys

def is_balanced(s):
    stack = []
    for char in s:
        if char == '(':
            stack.append(char)
        elif char == ')':
        	#stack에 빈값이 없고(True 이며) stack의 끝자리가 '(' 문자인 경우,
            if stack and stack[-1] == '(':
            	#맨 마지막 것을 pop 한다.
                stack.pop()
            else:
                return False
    # not stack = True라는 뜻.
    return not stack

a = int(sys.stdin.readline())
for _ in range(a):
    s = input().strip()
    if is_balanced(s):
        print('YES')
    else:
        print('NO')

이렇게 풀었다. 여기서 핵심은 True, False를 구분하는 것.

stack = list('아가므브드드')

print(not stack)

 

 

헷갈리면 이렇게 테스트 해보면 된다. not stack. 그러니까 stack이라는 변수에 빈값인가? 라는 의미이고 변수 안에 값이 있으면 False를 뱉고 그렇지 않으면 True를 뱉는다.

 

끝.

728x90