[알고리즘] 스택(Stack) 백준 9012번 - 괄호

minidoo·2020년 9월 13일
0

알고리즘

목록 보기
7/85
post-thumbnail
N = int(input())
inputStr = []

for _ in range(N):
    inputStr = input()
    exam = list(inputStr)

    stack = []

    for i in range(len(exam)):
        if len(stack) == 0 and exam[i] == ')':
            stack.append(exam[i])
            break
        else:
            stack.append(exam[i])
            if len(stack) != 1:
                if stack[len(stack)-1] != stack[len(stack)-2]:
                    stack.pop()
                    stack.pop()
            else:
                continue

    if len(stack) == 0:
        print('YES')
    else:
        print('NO')

풀이과정

  1. stack 배열을 만들어 괄호를 push, pop할 것이다.
  2. stack이 비어있고, 괄호 ')'가 들어오면 반복문을 빠져나온다.
  3. 그 외의 경우에 stack[-1]과 stack[-2]를 비교하여 다른 괄호 모양을 가지면 pop()을 해준다.

새로 배운 내용

range(시작, 끝, -1)

range의 세 번째 인자는 정렬 순서를 표현한다.
오름차순의 경우 생략하지만, 내림차순의 경우 -1을 넣는다.

for i in range(0, 4, -1):
    print(i)
    
<output>
3
2
1
0

0개의 댓글

관련 채용 정보