- 문제 예시를 직접 그려보면서 어떻게 유도가 되는지를 확인한 후 결론을 도출하는 코드를 작성했다.
(
는 그냥 스택에 넣는다
)
가 나오면 두가지 경우로 나누어진다.
)
가 나오고 이전 문자가 (
이었다면 해당 파트는 레이저이다. 따라서 현재 stack에 쌓인
(
개수(=쇠막대기 개수)만큼 개수를 더해준다.
)
가 나오고 이전 문자도 )
이었다면 쇠막대기 끄트머리에 대한 표현이다. 따라서 하나가 나올때마다 하나씩만 추가해주면 된다.
import sys
input = sys.stdin.readline
stack = []
bar = list(input().strip())
answer = 0
for i in range(len(bar)):
if bar[i] == "(":
stack.append("(")
else:
if bar[i-1] == "(":
stack.pop()
answer += len(stack)
else:
stack.pop()
answer += 1
print(answer)