백준 괄호 끼워넣기 11899번

초코소금빵·2025년 1월 22일

백준 코딩

목록 보기
1/7

문제

백준 11899번
https://www.acmicpc.net/problem/11899

문제 이해

올바르지 않은 괄호열이 주어질 때, 올바른 괄호열으로 만들기 위해 앞과 뒤에 붙여야 할 괄호의 최소 개수를 구하는 문제

예시)

올바르지 못한 괄호열: )))()
올바른 괄호열: ((()))()

올바른 괄호열을 만들기 위해서 ((( 3개를 추가해야 함.

**괄호열은 "(" , ")" 로 구성된 문자열을 의미함.

문제 접근

  • 스택 활용
  • stack에서 pop을 해서 빼려면, 마지막에 저장된 괄호가 "("이고, 현재 괄호가 ")" 이면 stack에서 마지막 괄호를 빼내면 된다.
  • 그렇게 되면, 문제가 있는 괄호만 스택에 남아있게 된다.

파이썬 코드

bar = input()
cnt = 0
stack = []
for i in bar:
    if stack and stack[-1] == "(":
        if i == ")":
            stack.pop()
        else:
            stack.append(i)
    else:
        stack.append(i)
print(len(stack))
profile
피할 수 없으면 즐기자

0개의 댓글