백준2800괄호제거

개발일지.·2022년 3월 31일
0

문제의 해결책은 잘 생각했지만 구현속도가 매우 느려서 시간이 조금 걸린게 아쉽다
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 ㅋ

profile
もう少し高く、もっと深く

0개의 댓글