[プログラマー]スープ


任意の問題の解釈


tupleを表す文字列が与えられます.
この文字列は、形、中に要素が入っています.
各小{}の元素サイズは異なり、i個の寸法の小{}は元のtupleの1~i個目の元素を有する.
{}はsetで、中の要素の順序は逆さまにすることができます.

アイデア


小さいものから大きいものまで、元の図面に追加する要素を選択すればいいです.

おしゃべり


最初は本当に問題を理解していませんでした.
{{1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2}}
ガトゥフ(2,1,3,4)を表すのが理解できないからです.
問題は、アセンブリが要素の順序に影響されないことです.
やっと聞き取れた.
もともとc++で問題を解きたかったのですが小さいsetを取得する過程でsplit関数が必要なのでPythonと書きました...忘れてしまいました.見つけるのに長い時間がかかりました.

コード#コード#

def solution(s):
    answer = []
    vec = [[] for i in range(501)]
    for i in range(1, len(s)):
        if s[i] == '{':
            t = ""
            for j in range(i+1, len(s)):
                if(s[j] =='}'):
                    t = s[i+1:j]#뒤에 인덱스는 미포
                    i = j
                    break;
            t = t.split(',')
            vec[len(t)] = t
            
    d = {}# dictionary
    
    for i in range(1,501):
        for j in range(len(vec[i])):
            if(vec[i][j] not in d):
                d[vec[i][j]] = 0
                answer.append(int(vec[i][j]))
    return answer

使用するPythonスキル


  • c++でinner for文からouter for文を移動する反復器が好きです.しかしPythonで同じ変数名が使えるかどうかはわかりません.
    jという新しい反復器を導入し,break時にi=jに更新した.

  • string split
    s[i+1:j]#後のインデックスが不完全

  • リスト内の要素数の指定
    vec = [[] for i in range(501)]