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
출력
["((()))", "(()())", "(())()", "()(())", "()()()"]
설명
세 쌍은 올바른 형식으로 다섯 가지 방식으로 배열할 수 있습니다. ((()))은 세 쌍을 모두 열고 나서 닫으며, (가 먼저 정렬되므로 목록의 맨 앞에 옵니다. ()()()은 각 쌍을 즉시 닫으므로 맨 마지막에 옵니다.

lock icon제출 시 숨은 테스트 +10개

challenge icon

후속 질문

n쌍에 대해 올바른 형식의 문자열을 생성하지 않고 개수를 셀 수 있나요?

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

케이스 1

케이스 2

입력

n = 3

기대값

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