길이가 2n인 괄호 문자열은 여는 괄호 ( n개와 닫는 괄호 ) n개로 이루어진다.
올바른 괄호 문자열은 다음과 같이 정의한다.
서로 붙어 있는 () 쌍을 지우는 과정을 반복해서 빈 문자열로 만들 수 있는 문자열.
예를 들어 (())는 올바른 괄호 문자열이다. 2번째와 3번째 위치의 쌍을 지우면 ()가 되고, 이것을 다시 지우면 빈 문자열이 된다. )()(는 올바르지 않다. 2번째와 3번째 위치의 쌍을 지우면 )(가 남고 더는 지울 수 없다.
여는 괄호와 닫는 괄호가 각각 n개인 올바른 괄호 문자열을 모두 모아 사전순으로 정렬했을 때, k번째 문자열을 구하라. 사전순 비교에서 (가 )보다 앞선다.
예를 들어 n=3인 올바른 괄호 문자열을 사전순으로 나열하면 다음과 같다.
((()))
(()())
(())()
()(())
()()()