괄호 문자열
시간 제한1초메모리 제한128 MB
n과 k가 주어질 때 길이 2n인 올바른 괄호 문자열 중 사전순으로 k번째를 출력한다.
문제
올바른 괄호 문자열은 여는 괄호 (와 닫는 괄호 )로 이루어진 문자열 중, 여는 괄호의 개수와 닫는 괄호의 개수가 같고, 모든 접두사에서 여는 괄호의 개수가 닫는 괄호의 개수 이상인 문자열을 말한다. 예를 들어 ()()는 올바른 괄호 문자열이지만, ())(는 접두사 ())에서 닫는 괄호가 여는 괄호보다 많으므로 올바른 괄호 문자열이 아니다.
길이가 인 두 올바른 괄호 문자열이 있을 때, 두 문자열이 처음으로 달라지는 위치에서 여는 괄호를 가진 쪽을 더 앞선 문자열이라고 한다. 이 순서는 (를 )보다 작다고 볼 때의 사전순과 정확히 같다.
두 정수 과 를 입력받아, 길이가 인 모든 올바른 괄호 문자열 중 사전순으로 번째인 것을 찾아 출력하는 프로그램을 작성하시오. (괄호 문자열의 번호는 번부터 매긴다.)
입력
과 두 정수가 공백 하나로 구분되어 한 줄에 주어진다 (, ).
출력
길이가 인 모든 올바른 괄호 문자열을 사전순으로 나열했을 때 번째에 오는 괄호 문자열을 한 줄에 출력한다. 입력은 항상 그러한 괄호 문자열이 존재하도록 주어진다.