単語の出現回数を多い順に出す

  • 文字列の処理
  • 問題 02
  • やさしい
  • 目安 11 分

空白で区切られた単語の列から、単語ごとの出現回数を数えて、多い順に出す。文字列を分けて数えて並べ替える練習です。

本番の試験は PC で受けることが多いので、PC での練習をすすめます。スマホでも、読んで、書いて、採点するところまで動きます。

入力は標準入力から読み、答えは標準出力に書きます。1 テストあたり 3 秒までです。

問題

英小文字だけの単語が、空白で区切られて 1 行に並んでいます。単語ごとに何回出てきたかを数え、出てきた回数が多い順に出力してください。回数が同じ単語は、アルファベット順 (辞書順) に並べます。

入力の形式

w_1 w_2 ... w_N

1 行に N 個の単語が、半角の空白 1 つで区切られて並びます。

出力の形式

出てきた単語の種類ごとに 1 行を出力します。1 行は「単語」と「回数」を半角の空白 1 つで区切ります。並びは、回数の多い順、回数が同じなら辞書順です。

制約

  • 単語の数 N は、1 以上 100000 以下です
  • どの単語も、英小文字 (a から z) だけの 1 文字以上 10 文字以下です

入力と出力の例

例 1

the が 3 回、and が 2 回です。残りの 3 つは 1 回ずつなので、辞書順に bird、cat、dog と並びます。

入力

the cat and the dog and the bird

出力

the 3
and 2
bird 1
cat 1
dog 1

例 2

単語が 1 つだけのときも同じ形です。

入力

go

出力

go 1

例 3

回数が同じ a と b は、辞書順で a が先です。

入力

b a b a c

出力

a 2
b 2
c 1

ヒント

まだ開いていません

付箋は 3 枚。下の段ほど答えに近づきます

  1. ヒント 2

  2. ヒント 3答えに近い

main.py
words = input().split()

# ここから書く

入力

出力

「実行する」を押すと、ここに出力が出ます

できているか「提出して採点」を押すと、隠れたテストを全部走らせて、通ったかをここに出します