백준 - 2800

Giho Kim·2023년 9월 26일

코테 연습

목록 보기
12/26

문제

답지 O

와 리얼 난 언제쯤이면 이런 문제 스스로 풀지 궁금하다.

  1. stack에 (면 해당 index 집어넣기
  2. )라면 (stack.pop(), index)를 쌍으로 index_stack에 넣기 (짝찌끼리 index)
  3. combination써서 하나씩 given에서 해당 인덱스를 ""로 괄호 빼주기
  4. 다뺏으면 result에 "".join
  5. set쓰고 sort해준뒤 result print
from itertools import combinations

given = list(input())

stack = []
idx_stack = []
result = []

for i, v in enumerate(given):
    if v == "(":
        stack.append(i)
        
    elif v == ")":
        idx_stack.append((stack.pop(), i))
        
for k in range(1, len(idx_stack) + 1):    
    c = combinations(idx_stack, k)    
    for j in c:
        tmp = given.copy()
        for k in j:
            tmp[k[0]] = ""
            tmp[k[1]] = ""
        
        tmp = "".join(tmp)
        if tmp not in result:
            result.append(tmp)

for i in sorted(result):
    print(i)
profile
취준돌이 개발자 김기호

0개의 댓글