괄호 뒤집기
시간 제한1초메모리 제한1024 MB
여는 괄호 N개와 닫는 괄호 N개로 이루어진 문자열이 주어질 때, 부분 문자열을 최소 횟수로 뒤집어 올바른 괄호 문자열로 만들고 그 뒤집기들을 출력한다.
문제
( 개와 ) 개로 이뤄진 괄호문자열 가 주어진다. 다음 시행을 최소로 하여 올바른 괄호문자열을 만들어라.
- 인 두 정수 , 을 고른다. 이후 로 이뤄진 부분 문자열을 뒤집는다. 즉, 을 각각 로 바꾼다.
올바른 괄호 문자열의 정의는 다음과 같다.
- 빈 문자열은 올바른 괄호 문자열이다.
A가 올바른 괄호 문자열이라면,(A)도 올바른 괄호 문자열이다.A와B가 올바른 괄호 문자열이라면,AB도 올바른 괄호 문자열이다.
입력
첫 번째 줄에 테스트 케이스의 개수 가 주어진다.
각 테스트 케이스의 첫 번째 줄에 정수 이 주어진다.
두 번째 줄에 ( 개와 ) 개로 이뤄진 문자열 가 주어진다.
모든 테스트 케이스에서 의 합은 을 넘지 않는다.
출력
각 테스트 케이스마다 첫 번째 줄에 필요한 시행의 최소 횟수 를 출력한다. 문제의 제약 조건 하에서 항상 임을 보일 수 있다.
다음 개의 줄에 각 시행을 나타내는 두 정수 , 을 공백으로 구분해 출력한다.
힌트
( 를 뒤집어도 )가 되지 않는다는 점을 유의하자.