' 11899번 괄호 끼워넣기 '
https://www.acmicpc.net/problem/11899
💡 스택이란?
- 물건을 쌓아 올리듯 자료를 쌓아 올린 형태의 자료구조
=> 데이터의 삽익과 삭제가 데이터의 가장 한쪽 끝에서만 일어나는 자료구조
💡 스택 특성
- 선형 구조 : 자료 간의 관계가 1 : 1 ( vs 트리 (비선형 구조 = 1 : N 관계))
- 후입선출 (Last-In-Frist-Out) : 가장 마지막으로 추가된 항목을 가장 첫번째로 제거
💡 스택 연산
- push : 데이터 삽입
- pop : 데이터 삭제 -> pop() : 가장 마지막 데이터 삭제
- top : 가장 마지막에 삽입한 데이터를 삭제하지 않고 return
- isEmpty : 스택이 비어있는지 여부 확인
- peek : 스택의 top에 있는 원소를 반환
S = input()
stack = []
total = 0
for s in S:
if s == '(': # 여는 괄호를 만나면 stack에 추가
stack.append(s)
elif s == ')' and stack == []: # 닫는 괄호를 만났는데 stack이 비어있다면
total += 1 # ( 를 붙여야 하므로 붙여야 할 괄호 갯수 +1
elif s == ')' and stack: # 닫는 괄호를 만났는데 stack이 비어있지 않다면
stack.pop() # 괄호 쌍 완성 -> stack에서 제거
if stack != 0: # stack에 남아있는 ( 가 있다면
total += len(stack) # ) 를 붙여야 하므로 붙여야 할 괄호 갯수 + 남은 갯수
print(total)
S = input()
stack = []
total = 0
for s in S:
if s == '(':
stack.append(s)
elif s == ')' and stack == []:
total += 1
elif s == ')' and stack:
stack.pop()
if stack != 0:
total += len(stack)
print(total)