만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

괄호 트리

시간 제한1초메모리 제한1024 MB

요약
괄호 문자열로 주어진 루트가 있는 순서 트리에서 루트부터 모든 잎 노드까지 거리의 합을 구합니다.
난이도

쉬움10점 중 3점

유형
문자열, 트리, 구현
정답자
아직 제출이 없습니다

문제

뿌리가 있는 순서 트리 TT는 짝이 맞는 괄호 문자열 p(T)p(T)로 나타낼 수 있다. 노드가 하나뿐인 트리는 ()로 나타낸다. 루트가 순서가 정해진 부분트리 T_1,T_2,…,T_kT\_1, T\_2, \dots , T\_k 를 자식으로 kk개 가지면, p(T)p(T)는 다음과 같이 정의한다.

p(T)≔p(T) ≔ ( +p(T_1)+p(T_2)+⋯+p(T_k)++ p(T\_1) + p(T\_2) + \cdots + p(T\_k) + )

여기서 ++는 문자열 연결을 뜻한다. 아래 그림은 뿌리 있는 순서 트리 두 개를 보여준다. 트리 T_LT\_L과 T_RT\_R의 문자열 표현 p(T_L)p(T\_L)과 p(T_R)p(T\_R)은 각각 ((()()())())와 (()((()(()))()))이다.

뿌리에서 잎 노드까지의 거리는 뿌리에서 그 잎까지 가는 동안 지나는 간선의 개수이다. 그림에서 뿌리 노드는 파란색이고, 뿌리에서 각 잎까지의 거리가 표시되어 있다. 뿌리에서 모든 잎까지 거리의 합은 T_LT\_L이 77, T_RT\_R이 1010이다.

하나의 뿌리 있는 순서 트리만을 나타내는 짝이 맞는 괄호 문자열이 주어진다. 뿌리에서 모든 잎 노드까지 거리의 합을 구하는 프로그램을 작성하라.

입력

한 줄에 하나의 뿌리 있는 순서 트리를 나타내는 짝이 맞는 괄호 문자열이 주어진다. 문자열에는 괄호 이외의 문자가 없다. 문자열의 길이는 2 이상 10710^7 이하이다.

출력

트리의 뿌리에서 모든 잎 노드까지 거리의 합을 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    ((()()())())
    
    예상 출력
    7
    
  2. 예제 2

    입력
    (()((()(()))()))
    
    예상 출력
    10