반응형
코드
from itertools import combinations
inp = list(input())
stack = []
cnt = 0
com_list = []
answer = []
for i in range(len(inp)):
if inp[i] == "(":
stack.append([inp[i],i])
cnt = 0
elif inp[i] == ")":
if cnt == 0:
a = stack[-1][1]
stack.pop()
com_list.append([a,i])
for i in range(1,len(com_list)+1):
li = ((combinations(com_list,i)))
for j in li:
inp_list = list(inp)
for k in j:
a,b = k
inp_list[a] = ""
inp_list[b] = ""
answer.append(''.join(inp_list))
ans = set(answer)
for i in sorted(ans):
print(i)
설명
괄호의 위치를 나타내는 숫자를스택에 같이 넣어줘서 짝이 맞는 괄호끼리의 숫자를 com_list에 넣어주었다.
itertools.combination을 이용하여 com_list에 있는 값으로 만들 수 있는 모든 조합을 찾아냈다.
각각의 조합에 있는 숫자들을 이용하여 그 위치에 있는 괄호들을 없애주었고 나머지 값은 answer 리스트에 담았다.
inp_list = list(inp)를 할 때 처음에는 inp_list = inp 로 했더니 inp의 값도 inp_list를 따라 계속 바뀌었다.
파이썬에서는 리스트를 복사할 때 list를 앞에 붙여줘야 된다는 것을 알게 됐다.
또, 중복되는 값을 제거하지 않아서 오류가 나서 set함수를 이용해서 중복값을 제거해주었다.
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[백준][Python] 22942번 데이터 체커 (0) | 2022.02.11 |
---|---|
[백준][Python] 10845번 큐 (0) | 2022.02.11 |
[백준][Python] 2493번 탑 (0) | 2022.02.10 |
[백준][Python] 2346번 풍선 터뜨리기 (0) | 2022.02.10 |
[백준][Python] 2504번 괄호의 값 (0) | 2022.02.10 |
댓글