Menu
CoddyTech

Generate Parentheses

괄호 문자열은 왼쪽에서 오른쪽으로 읽을 때 )의 개수가 (의 개수를 앞서지 않고, 끝에서 두 개수가 같으면 올바른 괄호 문자열입니다. 따라서 (())()는 올바른 괄호 문자열이지만, ())(는 그렇지 않습니다. 세 번째 문자가 한 번도 열리지 않은 쌍을 닫기 때문입니다.

정수 n이 주어지면 여는 괄호 n개와 닫는 괄호 n개로 이루어진 모든 올바른 괄호 문자열을 사전순으로 정렬해 반환하세요. 여기서 (가 )보다 앞에 옵니다.

함수

generateParenthesis(n: integer) → string-array
ninteger
괄호 쌍의 개수
반환값string-array
사전순으로 나열된 n쌍의 모든 올바른 문자열

제약 조건

  • 1 ≤ n ≤ 8
  • n = 8일 때 답은 문자열 1,430개입니다.

예제

입력
n = 3
출력
["((()))", "(()())", "(())()", "()(())", "()()()"]
설명
세 쌍은 올바른 형식의 문자열 다섯 개를 만듭니다. ((()))은 세 쌍을 모두 먼저 열기 때문에 가장 먼저 정렬되고, ()()()은 각 쌍을 즉시 닫기 때문에 마지막에 옵니다.
challenge icon

후속 질문

n쌍의 올바른 문자열을 직접 생성하지 않고도 개수를 셀 수 있나요?

코드 초기화
def generateParenthesis(n):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

인자

n = 3

예상 출력

["((()))", "(()())", "(())()", "()(())", "()()()"]