괄호 문자열 사전순 (작은 입력)
면접 대비시간 제한5초메모리 제한512 MB
n쌍의 올바른 괄호 문자열을 사전 순으로 세어 각 테스트 케이스의 k번째 문자열을 출력합니다.
문제
길이가 인 괄호 문자열은 여는 괄호 ( 개와 닫는 괄호 ) 개로 이루어진다.
올바른 괄호 문자열은 다음과 같이 정의한다.
서로 붙어 있는 () 쌍을 지우는 과정을 반복해서 빈 문자열로 만들 수 있는 문자열.
예를 들어 (())는 올바른 괄호 문자열이다. 2번째와 3번째 위치의 쌍을 지우면 ()가 되고, 이것을 다시 지우면 빈 문자열이 된다. )()(는 올바르지 않다. 2번째와 3번째 위치의 쌍을 지우면 )(가 남고 더는 지울 수 없다.
여는 괄호와 닫는 괄호가 각각 개인 올바른 괄호 문자열을 모두 모아 사전순으로 정렬했을 때, 번째 문자열을 구하라. 사전순 비교에서 (가 )보다 앞선다.
예를 들어 인 올바른 괄호 문자열을 사전순으로 나열하면 다음과 같다.
((()))
(()())
(())()
()(())
()()()
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다. 이어지는 개의 줄에 각각 정수 과 가 공백으로 구분되어 주어진다.
출력
각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. 는 1부터 시작하는 테스트 케이스 번호이고, 는 여는 괄호와 닫는 괄호가 각각 개인 올바른 괄호 문자열 중 사전순으로 번째인 문자열이다. 그런 문자열이 개보다 적으면 자리에 Doesn't Exist!를 출력한다.