728x90
import sys
from itertools import combinations
string = sys.stdin.readline().rstrip()
idx_stack, stack, answer = [], [], set() #1
for idx, v in enumerate(list(string)): #2
if v == '(': #3
stack.append(idx)
elif v == ')': #4
start = stack.pop()
end = idx
idx_stack.append([start, end])
for i in range(1, len(idx_stack)+1): #5
for j in combinations(idx_stack, i): #6
tmp = list(string) #7
for k in j:
start, end = k #8
tmp[start] = ''
tmp[end] = ''
answer.add(''.join(tmp)) #9
for i in sorted(list(answer)): #10
print(i)
#1 : 괄호들의 인덱스를 저장할 스택, 옮겨줄 스택, 중복값을 방지하기위한 set선언
#2 : 괄호의 인덱스를 확인하기위해 enumerate로 반복문 순환
#3 : 여는 괄호면 인덱스 stack에 추가
#4 : 닫는 괄호면 여는 괄호의 인덱스 start와 닫는 괄호의 인덱스 end를 idx_stack에 삽입
#5 : 1부터 인덱스스택의 길이만큼 반복
#6 : 모든 경우를 뽑기 위해 인덱스를 하나뽑는것 부터 모두 다 뽑는 경우까지 반복
#7 : 괄호를 제거해줄 임시 리스트 생성
#8 : 튜플로 묶인 인덱스 번호들을 start와 end로 지정하고 임시 리스트에 공백으로 설정
#9 : 공백을 지우기 위해 join으로 임시 리스트 묶어줌
#10 : 사전 순으로 정렬된 리스트 하나씩 출력
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 17952 파이썬(python) : 과제는 끝나지 않아! (0) | 2022.07.24 |
---|---|
[백준] 11899 파이썬(python) : 괄호 끼워넣기 - 필요한 괄호 개수 세기 (0) | 2022.07.24 |
[백준] 16210 파이썬(python) : PPAP (0) | 2022.07.24 |
[백준] 1662 파이썬(python) : 압축 (0) | 2022.07.24 |
[백준] 2493 파이썬(python) : 탑 - (monotone stack 알고리즘) (0) | 2022.07.23 |