() 쌍을 스택에 넣으면서 진행하면 될거같은데
막대기 같은 경우는 (가 시작점이고, )가 나오면 막대기 끝인데
레이저가 잘리는게 아니라, 쇠막대기가 잘리는거!!!
( stack.append() & += 1
( stack.append() & += 1
( stack.append() & += 1
( stack.append() & += 1
) if [i-1] == '(' : pop() & -= 1 & += len(stack) x2
( stack.append() & += 1
) if [i-1] == '(' : pop() & -= 1 & += len(stack) x2 여기까진 계산상 맞음
) if [i-1] == ')' : pop() 이러면 되지않나?
( stack.append() & += 1
( stack.append() & += 1
) if [i-1] == '(' : pop() & -= 1 & += len(stack) x2
) if [i-1] == ')' : pop() 이러면 되지않나?
( stack.append() & += 1
) if [i-1] == '(' : pop() & -= 1 & += len(stack) x2
''' 내가 푼 '''
import sys
arr = sys.stdin.readline()
stack = []
ans = 0
leng = len(arr)
for i in range(leng): # ')'부터 들어올일은 없음
if arr[i] == '(':
stack.append('(') # 스택 길이 늘린다 = 잘려있는 막대기
ans += 1 # 막대기 수 추가
elif arr[i] == ')':
# this is laser
if arr[i-1] == '(':
stack.pop()
ans -= 1 # 막대기 수 추가 취소
ans += len(stack) # 막대기 수 스택 길이만큼 추가(= 2배)
# this is not laser
else:
stack.pop() # 스택의 길이만 줄여주자!
print(ans)