[Sart]Boj 20291:ファイルのクリーンアップ

1591 ワード

[Sart]Boj 20291:ファイルのクリーンアップ


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

質問する


友人から中古ノートパソコンを買ったスブロスは、ノートパソコンを開けると驚愕した.デスクトップに整理されていないファイルがいっぱいあるからです.そして画面の隅に友達のメッセージが見えます.
デスクトップ上のファイルには価値のある宝物に関する情報があります.もしあなたが1つ消すことができたら、宝物だけでなく、ノートパソコンも使えません.これらの書類を分析して、宝物の主人公になってほしい.ヒントは「拡張子」
怒ったスブロスはすぐに宝物の物語に息を吹き飛ばされ、宝物の情報を明らかにしようと努力した.しかし、書類が多すぎるため、彼はすぐにあきらめ、宝物の半分を整理して補償するように要求した.sprousのリクエストは次のとおりです.
拡張子によって
  • ファイルを整理して、私にいくつの
  • があることを教えます
  • 拡張子をアルファベット順に並べて表示してください.
  • では、宝の半分を得るために、スブロスのノートパソコンのファイルを整理するプログラムを作りましょう.

    入力


    最初の行は、デスクトップ上のファイルの数NNNを示します.(1≤N≤50 0001\leq N\leq 50\0001≤N≤50 000)
    2行目からNNN行では、デスクトップ上のファイルの名前が付けられます.ファイル名は小文字と点(.)構成のみ.ポイントは正確に1回表示され、ファイル名の最初の文字または最後の文字では表示されません.各ファイル名の長さは最低333、最大100100100です.

    しゅつりょく


    行ごとに1つの拡張子とその拡張子ファイルの数を出力します.複数の拡張子がある場合は、拡張子の辞書順に出力されます.

    入力例



    Code

    import sys
    si = sys.stdin.readline
    
    N = int(si())
    
    dict_ = {}
    for i in range(N):
        temp = (si().split('.')[1]).split()[0] 
        if temp not in dict_:
            dict_[temp] = 1
        else:
            dict_[temp] += 1
    
    for x in sorted(dict_,key = lambda x:x):
        print(x,dict_[x])

    Screenshot | Output