백준 10799 문제 링크
이 문제는 여는 괄호( '(' )와 닫는 괄호( ')' )로 구성된 입력을 보고 레이저 또는 막대기로 판단해 얻을 수 있는 총 막대기의 개수를 구하는 문제이다.
스택이란?
스택(stack)을 활용하여 현재까지 잘린(or 안 잘린) 막대기의 개수를 판단하는 것에 활용하도록 한다.
bar = input()
stack = ['(']
cnt = 0
for b in range(1, len(bar)):
if bar[b] == '(':
# 현재 괄호가 '('라면 쇠막대의 시작이거나 레이저의 시작이다.
stack.append('(')
else:
if bar[b - 1] == '(':
# 현재 괄호가 ')'이고 이전 괄호가 '('이라면 레이저이다.
stack.pop()
cnt += len(stack)
else:
# 현재 괄호가 ')'이고 이전 괄호가 ')'이라면 쇠막대의 끝이다.
stack.pop()
cnt += 1
print(cnt)