문제의 해결책은 잘 생각했지만 구현속도가 매우 느려서 시간이 조금 걸린게 아쉽다
1. 괄호 쌍을 찾아서 쌍으로 이루어진 배열 만들기
2. 배열의 조합을 1부터 배열의 총 개수까지 만들기
3. 만든 조합에서의 괄호 쌍들을 추출해서 제거하고 출력하기
n = input() #(0/(0))
left_stack=[]
gal=[]
final=set()
for i in range(len(n)):
if n[i]=='(' :
left_stack.append(i)
elif n[i]==')' and len(left_stack) > 0 :
gal.append((left_stack.pop(),i))
def combination (nums,n) :
result = []
if n==0 : return [[]]
for i in range (len(nums)):
fixed = nums[i]
rest = nums[i+1:]
for c in combination(rest,n-1):
result.append([fixed]+c)
return result
for i in range(1,len(gal)+1):
answers=combination(gal,i)
for answer in answers:
temp=list(n)
for left,right in answer:
temp[left]=""
temp[right]=""
final.add("".join(map(str, temp)))
final = list(final)
final.sort()
for i in range(len(final)):
print(final[i])
지금까지 순열,조합을 함수 구현해서 썼는데 바보였다,,
라이브러리가 있었더라,,
from itertools import combinations ㅋ