페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#2621

[중등부] 2025 KOI 2차대회 대비 모의고사 (2회차)

괄호 합체
서브태스크
1초 1024MB

문제

'('와 ')'만으로 이루어진 문자열을 괄호 문자열이라 한다. 그 중에서도 올바른 괄호 문자열은 다음과 같이 정의된다.

  1. 빈 문자열은 올바른 괄호 문자열이다.

  2. 문자열 S가 올바른 괄호 문자열일 때, S를 (와 )로 감싼 문자열 (S)도 올바른 괄호 문자열이다.

  3. 문자열 ST가 올바른 괄호 문자열일 때, 이 두 문자열을 이어붙인 문자열 S+T도 올바른 괄호 문자열이다.

올바른 괄호 문자열의 예시로는 ()()(), (()), ()(())()()이 있다.

문자열 S의 접두사는 S의 첫번째 원소를 포함하는 S의 부분 문자열을 의미한다. abcd의 접두사로는 a, ab, abc, abcd가 있다. 빈 문자열은 접두사가 될 수 없음에 유의하라.

두 괄호 문자열 A, B에 대해, A의 길이 i\,(1\leq i\leq |A|)의 접두사를 a_i, B의 길이 j\,(1\leq j\leq |B|)의 접두사를 b_j라 할 때 a_ib_j를 이어붙인 문자열 a_i+b_j가 올바른 괄호 문자열인 순서쌍 (i,j)의 개수를 구하는 프로그램을 작성하시오.


입력

첫째 줄에 괄호 문자열 A가 주어진다.

둘째 줄에 괄호 문자열 B가 주어진다.

[제약 조건]

  • A는 '('와 ')'만으로 이루어진 괄호 문자열이다.

  • B는 '('와 ')'만으로 이루어진 괄호 문자열이다.

  • 1\leq |A|\leq 200\, 000

  • 1\leq |B|\leq 200\, 000


출력

첫 줄에 문제의 정답에 해당하는 올바른 괄호 문자열인 순서쌍 (i,j)의 개수를 출력한다.


부분문제

번호 점수 조건
#13점

|A| = 1,\ |B| = 1

#217점

|A| \le 5000,\ |B| = 5000

#321점

B는 ')'만으로 이루어진 괄호 문자열이다.

#431점

A는 '('만으로 이루어진 괄호 문자열이다.

#528점

추가 제약 조건 없음


예제

((
))
2

해당 입력에서 가능한 경우는 아래 두 가지 경우만이 존재한다.

  • a_1 + b_1 = ()

  • a_2 + b_2 = (())

해당 예제는 부분 문제 2, 3, 4, 5를 만족한다.

로그인해야 코드를 작성할 수 있어요.