현욱은 괄호왕이야!!

4 - O · BOJ 15926 · 시간 2 초 · 메모리 512 MB

현욱은 괄호왕이야!! 문제 설명 그림

여는 괄호 ‘(’와 닫는 괄호 ‘)’로 구성된 문자열에서 아래의 조건을 만족하는 문자열을 올바른 괄호 문자열이라고 부른다.

- () 는 올바른 괄호 문자열이다

- 어떤 문자열 x가 올바른 괄호 문자열이라면, (x)도 올바른 괄호 문자열이다.

- 어떤 문자열 x와 y가 올바른 괄호 문자열이라면, xy도 올바른 괄호 문자열이다.

현욱은 친구로부터 생일 선물로 굉장히 긴 괄호 문자열을 받았다(도대체 왜 이런 걸 선물하는걸까?). 하지만 현욱은 올바른 괄호 문자열이 아니면 굉장히 싫어하기 때문에, 받은 괄호 문자열에서 연속한 일부분을 잘라서 올바른 괄호 문자열을 만들려고 한다. 그리고 이왕이면 긴 문자열이 좋으니 현욱은 부분 구간을 최대한 길게 잘라내려고 한다. 현욱을 도와 주어진 괄호 문자열에서 위의 조건을 만족하는 가장 긴 부분 문자열의 길이를 계산하는 프로그램을 작성해보자.

입력

첫 줄에 문자열의 길이 n (1 ≤ n ≤ 200,000)이 주어진다.

둘째 줄에 괄호로만 구성된 길이 n짜리 문자열이 주어진다.

출력

주어진 문자열에서 길이가 가장 길면서 올바른 괄호 문자열인 부분 문자열의 길이를 출력한다. 올바른 괄호 문자열인 부분 문자열을 찾을 수 없는 경우 0을 출력한다.

테스트 케이스

예제 입력 1
5
(())(
예제 출력 1
4
예제 입력 2
14
(()))()((()))(
예제 출력 2
8
코드 제출
C++ 편집기를 불러오는 중입니다...
채점서버 IP / 포트

브라우저가 직접 호출합니다. 요청 대상: http://localhost:12010/judge

코딩살구클럽채점서버 레포를 클론한 후 채점서버를 실행하고, IP 입력란에 현재 PC의 IP를, 포트 입력란에 채점서버 포트를 등록하면 로컬 채점서버와 코딩살구클럽이 연동됩니다.

현재는 크롬브라우저만 지원합니다.

  • 예시: IP 192.168.22.222, 포트 12010
macOS IP 확인
$ ipconfig getifaddr en0
Windows IP 확인
> ipconfig | findstr IPv4

해설 코드

해설 코드를 보려면 버튼을 눌러주세요.