괄호 문자열은 다음과 같이 정의한다.
- 빈 문자열은 괄호 문자열이다.
- S가 괄호 문자열이면 (S)도 괄호 문자열이다.
- S와 T가 괄호 문자열이면 ST도 괄호 문자열이다.
- 괄호 문자열은 위 세 규칙으로만 만들어진다.
예를 들어 ()()와 ((()))(())는 괄호 문자열이고, )((), (((((, ())는 괄호 문자열이 아니다.
문자열 S가 주어지면 S의 부분 문자열 중 괄호 문자열인 것이 몇 종류인지 세는 프로그램을 작성하시오. 부분 문자열은 S에서 연속한 구간을 잘라낸 문자열이고, 빈 문자열은 세지 않는다. 같은 문자열이 여러 위치에 나타나도 한 번만 센다.