BJ 1181単語の並べ替え


もし問題があったら?
私が試した方法
  • 入力単語の長さをインデックスとする2次元配列(words)を作成します.
    (例えば、全長10の単語がword[10]に含まれることを確保するため)
  • .
  • 単語の配列を完了します.
  • 個の単語を巡回(長さ順)(1次元配列)し、重複値を除去して並べ替える(辞書順)
  • .
    # 1.
    N = int(input())
    words = [[] for _ in range(52)]
    
    # 2.
    for _ in range(N):
        word = input()
        n = len(word)
        words[n].append(word)
    
    # 3.
    for word in words:
        for elem in sorted(list(set(word))):
            print(elem)
    
    他の分コードを参照して最適化
  • readline
  • を使用
  • セットを使用する繰り返し値を最初から消去し、入力
  • を受信する.
  • 並べ替えの場合、key=lenを使用して長さを並べ替えます(長さで並べ替えられるとは知りませんでしたが...)
  • 行が必要な場合はjoinエスケープ文字
  • を使用します.
    import sys
    
    N = int(input())
    words = set()
    
    for _ in range(N):
        words.add(sys.stdin.readline().rstrip())
    
    words = sorted(sorted(list(words)), key=len)
    print('\n'.join(words))