BOJ - 9012

Kaydenna92·2022년 6월 2일
0

Algorithm

목록 보기
6/36

stack 자료구조 활용하여 해결

문제보기


N = int(input())
for i in range(N): # N번만큼 반복
    temp = input()
    stack = []
    for i in temp:
        if i == '(' : 
            stack.append(i)
        elif i == ')':
            if len(stack) != 0 and stack[-1] == '(': # stack이 비어 있지않고, 최상단 값이 '(' 이면 ')'을 만나면 VPS
                stack.pop() # 위의 조건을 만족하면 pop
            else:
                stack.append(')')
                break
    
    if len(stack) == 0: # 모든 문자가 VPS면 stack의 길이는 0
        print('YES') # 따라서 YES
    else:
        print('NO') 

stack

한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last in First Out) 형식의 자료구조
가장 최근에 스택에 추가한 항목이 가장 먼저 제거된다.
Python에서는 list 사용

profile
persistently

0개의 댓글