어떤 문자열 S에 앞뒤로 괄호를 추가하여 S를 올바른 괄호열로 만들고자 한다. 괄호로만 구성된 문자열 S가 주어졌을 때, S를 올바른 괄호열로 만들기 위해 앞과 뒤에 붙여할 할 괄호의 최소 개수를 출력하시오. 예를 들어, S = "((()" 인 경우에는 S="((()))"로 뒤에 2개의 괄호를 추가하면 된다. S="()))("인 경우에는 S="((()))()"로 앞에 2개, 뒤에 1개의 괄호를 추가하면 된다. 단, 올바른 문자열을 만들 수 없는 입력은 주어지지 않는다고 가정해도 된다.
Input 첫째 줄에 괄호로만 구성된 문자열 S가 주어진다. [1] )))() [2] )(() [3] ))()(( [4] )(()(())) Output 첫째 줄에 S를 올바른 괄호열로 만들기 위해 앞뒤로 추가해야 할 괄호의 최소 개수를 출력한다. [1] 3 [2] 2 [3] 4 [4] 1
import sys
input =sys.stdin.readline
# 뒤에 붙이는건 ")" 스택에 남아있는 갯수"("만큼 붙여주면 된다 len(stack)
# 앞에 붙이는건 "(" close를 만나면 pop을 시켜줘야 하는데 스택이 비어있으면 +1만큼 증가시켜준다
def sol(array):
cnt = 0
stack=[]
for i in range(len(array)):
if array[i]=="(":
stack.append(array[i])
else:
if len(stack)==0:
cnt+=1
else:
stack.pop()
return cnt+len(stack)
array = list(input().strip())
print(sol(array))