아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

올바른 괄호

면접 대비

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

요약
괄호 문자열에서 문자 하나를 지웠을 때 올바른 괄호열이 되는 경우의 수를 센다.
난이도

보통10점 중 6점

유형
문자열, 누적 합, 그리디, 구현
정답자
아직 제출이 없습니다

문제

(\texttt{(}, )\texttt{)}로 구성된 문자열 SS에서 정확히 하나의 괄호를 지워 올바른 괄호열을 만들 수 있는 경우의 수를 출력하자.

올바른 괄호열은 다음과 같이 정의된다.

  1. ()\texttt{()}는 올바른 괄호열이다.
  2. A\texttt{A}가 올바른 괄호열이면 (A)\texttt{(A)}는 올바른 괄호열이다.
  3. A\texttt{A}와 B\texttt{B}가 올바른 괄호열이면 AB\texttt{AB}는 올바른 괄호열이다.

입력

첫번째 줄에 문자열 SS가 공백 없이 주어진다. (3≤∣S∣≤100 0003 \leq \vert S \vert \leq 100\,000, ∣S∣\vert S \vert는 홀수이다.)

답은 11 이상이다. 즉, 지웠을 때 올바른 괄호열이 되는 문자가 적어도 하나 존재한다.

출력

올바른 괄호열을 만들 수 있는 경우의 수를 출력한다.

예제2

  1. 예제 1

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

    입력
    ()(()))
    
    예상 출력
    4