torus711 のアレ

主に競技プログラミングの問題について書きます.PC 以外だと数式が表示されないかもしれないです

AtCoder Beginner Contest #008, B : 投票

問題概要

 N 個の文字列の(多重)集合 S が与えられる。S に最も多く含まれている文字列を一つ出力せよ。

解法

 まず、S 中の各文字列についてそれと等しい文字列が何個含まれているか数えます。その後、最も多く含まれていた文字列(の内の一つ)を出力することで解くことができます。

コード

main = getLine >> getContents >>= putStrLn . head . head . reverse . sortBy ( \as bs -> length as `compare` length bs ) . group . sort . lines