개의 여는 괄호와 개의 닫는 괄호로 구성된 문자열이 주어진다. 문자열에 할 수 있는 작업은 아래 두 가지이다.
두 작업은 원하는 순서로 임의로 진행할 수 있다. 모든 문자를 제거하는 최소 작업 횟수를 구하라.
첫 줄에 괄호의 수를 나타내는 정수 이 주어진다. ()
그다음 줄에 개의 여는 괄호와 개의 닫는 괄호로 이루어진 길이 의 문자열이 주어진다.
주어지는 괄호 문자는 ()
중 하나다.
첫 줄에 두 작업을 원하는 순서로 자유롭게 진행하여 모든 문자를 제거하는 최소 작업 횟수를 출력한다.
3 ())()(
4
5 ()(())(())
5
5 )()(()))((
7
예제 1에서, 네 번째와 다섯 번째의 짝이 맞는 쌍을 제거하고 나면 문자열은 ())(
이 된다.
문자열에서 세 번째와 네 번째 글자를 교환하면 문자열은 ()()
이 된다. 이제 짝이 맞는
쌍을 두 번 제거하면 모든 문자를 제거한 것이다.
따라서, 이 경우의 답은 가 된다.
예제 2에서, 짝이 맞는 쌍을 계속 제거하면 다섯 번의 작업으로 모든 문자를 제거할 수 있음을 알 수 있다.
예제 3에서, 마지막에서 두 번째와 세 번째 글자를 교환하면 문자열은 )()(())()(
이
된다. 짝이 맞는 쌍을 제거하는 것을 네 번 반복하면 문자열은 )(
이 된다.
여기서 두 문자를 교환하고 짝이 맞는 쌍을 제거할 수 있다. 작업의 횟수는 번이다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 21점
종류 2: 26점
종류 3: 53점
추가적인 제한 조건이 없음.