1181号:単語のソート[python]


これは白準アルゴリズムの1181題です.
  • 先にやろう
  • num = int(input())
    words = [[0]]
    
    for i in range(num):
        a = 2
        tmpword = input()
    
        for j in range(len(words)):
            if tmpword in words[j]:     # 중복 방지
                a = 1
                continue
            if len(tmpword) == words[j][0]:     # 기존의 리스트에 입력 받은 단어 길이에 해당하는 숫자가 존재하면
                words[j].append(tmpword)
                a = 0
    
        if a == 1:      # 중복 방지
            continue
        elif a == 2:
            words.append([len(tmpword), tmpword])
    
    words.sort()
    
    for i in range(1, len(words)):
        words[i].remove(words[i][0])
        words[i].sort()
        for j in range(len(words[i])):
            print(words[i][j])
    この問題は2回ソートする必要があります.1つ目はアルファベット数で並べ替え、2つ目は長さが同じ場合にアルファベット順で並べ替えます.
    データの入力、リストの生成
    「ニンジン」という言葉が届いた場合は、「ニンジン」リストに追加します.ここで6はアルファベットの個数を表します.
    このようにニンジン、リンゴ、ブルーベリーの順に入力し、[6、ニンジン]、[5、apple]、[9、ブルーベリー]に保存する.ただしここでトマトを入力する場合、トマトは6文字なのでニンジンのリストに追加する必要があります.したがって,[6,ニンジン,トマト],[5,apple],[9,blueberry],追加リストは文字数の有無によって2つのケースが見られる.
    アルファベット順
    上のリスト[6,ニンジン,トマト],[5,apple],[9,ブルーベリー]では,各リストの0番目のインデックスを比較ソートした.Pythonリストから.上記のリストをsort()関数でソートすると、[5,apple],[6,ニンジン,トマト],[9,ブルーベリー]となる.
    アルファベット順に並べ替え、出力
    複文で出力する場合は[6,ニンジン,トマト]から数字6を抜き,並べ替えた後,順次出力する.