[Sart]Boj 1181:単語のソート

1238 ワード

[Sart]Boj 1181:単語のソート


Link: https://www.acmicpc.net/problem/1181

質問する


N個の小文字の単語がある場合は、次の条件に従ってプログラムを作成します.
  • から
  • まで短い
    同じ長さの場合、辞書順

  • 入力


    1行目は単語の個数Nを与える.(1≦N≦20000)2行目から、各行にN個の小文字からなる単語があります.指定された文字列の長さは50を超えません.

    しゅつりょく


    条件付きソートで単語を出力します.ただし,同じ単語が複数回入力されると,1回のみ出力される.

    I/O例



    コードアクセス

  • のような単語の複数回の入力を防止するために、リストではなくsetに保存して入力を受け入れる.
  • sort()を行うために,集合に格納された単語をlistに再格納する.
  • listは、最初に長さ順に並べられ、辞書順に並べられて出力される.
  • Code | Python

    import sys
    si = sys.stdin.readline
    
    N = int(si())
    words = set()
    #set에 입력받기
    for i in range(N):
        words.add(si().split()[0])
    
    #set를 list에 다시 저장해준다
    list_ = []
    for x in words:
        list_.append(x)
    
    #정렬(1.길이 2.사전순)후 출력
    list_.sort(key = lambda x:(len(x),x))
    for x in list_:
        print(x)

    Screenshot | Output