標準2800かっこを削除
7590 ワード
問題の解決策はよく考えられたが、実施速度が遅く、少し時間がかかったので、残念だ.
1.カッコのペアを検索してペア配列を作成
2.配列の組合せを作成し、1から配列までの合計数
3.作成した組合せからかっこのペアを抽出し、削除して出力する
ライブラリがあり、
itertoolsからコンビネーションをインポート
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])
今までシーケンスと組み合わせを実現する関数を使っていましたが、バカですね.ライブラリがあり、
itertoolsからコンビネーションをインポート
Reference
この問題について(標準2800かっこを削除), 我々は、より多くの情報をここで見つけました https://velog.io/@refindmysapporo/백준2800괄호제거テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol