본문 바로가기

코딩/Python

[Python] 백준 9012 괄호

반응형

코드 작성

n = int(input())

for _ in range(n):
    k = list(input())
    stack=[] 
    for i in k:
        if i == '(':
            stack.append(i)
        elif i==')':
            if stack: 
                stack.pop()
            else:
                print('NO')
                break    
    else: 
        if stack:
            print('NO')
        else:
            print('YES')

코드  풀이

 

n = int(input())

for _ in range(n):
    k = list(input())
    stack=[]  # 스택은 for문 안에 있어야 계속 초기화하면서 사용할 수 있음
    for i in k:
        if i == '(':
            stack.append(i)
        elif i==')':
            if stack: #스택이 뭔가 있을경우(→len(stack)!= 0)
                stack.pop()
            else:
                print('NO')
                break    
    else:    #for문에 break가 되면 아래의 if,else값이 실행이 안되기 때문에 for - break - else로 작성
        if stack:
            print('NO')
        else:
            print('YES')

#1

괄호 ‘(’ 또는 ‘)’ 의 리스트를 입력 받는다

 

#2

(1) ‘(’ 가 입력 됐을 때는 스택에 추가한다.

(2) ‘)’ 가 입력 됐을 때는 스택에서 ‘(’를 빼낸다. 만약 스택이 비어있다면 'NO' 를 출력하고 for문을 종료한다.

 

#3

(3) 리스트 마지막 값이 입력 된 후 스택에 남아있다면 NO, 그렇지 않으면 YES를 출력한다.

 
반응형