[BOJ 13535] 괄호 부분 문자열
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
5
Time limit:
2.0s
Memory limit:
512M
Problem types
Allowed languages
괄호 문자열은 다음과 같이 정의된다.</p>
- 빈 문자열은 괄호 문자열이다.
- S가 괄호 문자열일 때, (S)도 괄호 문자열이다.
- S와 T가 괄호 문자열이라면, ST도 괄호 문자열이다.
- 모든 괄호 문자열은 위의 3개 규칙으로만 만들 수 있다.
예를 들어, "()()"와 "((()))(())"는 괄호 문자열이고, ")(()", "(((((", "())" 는 아니다.
문자열 S가 주어졌을 때, S의 부분 문자열 중에서 서로 다른 괄호 문자열의 개수를 구하는 프로그램을 작성하시오. 이 때, 빈 문자열은 제외해야 한다.
입력 형식
첫째 줄에 문자열의 길이 N (1 ≤ N ≤ 500,000)이 주어진다.</p>
둘째 줄에 문자열 S가 주어진다.
출력 형식
첫째 줄에 S의 부분 문자열 중에서 서로 다른 괄호 문자열의 개수를 출력한다.
예제 입력 1
10
()()()()()
예제 출력 1
5
예제 입력 2
7
)(())()
예제 출력 2
3
힌트
- 예제 1: "()", "()()", "()()()", "()()()()", "()()()()()"
- 예제 2: "()", "(())", "(())()"
Comments