MathPyCoder’s diary

Pythonerの、Pythonerによる、Pythonerのための記事

【AtCoder】茶diff ABC042-B (Difficulty: 616)Pythonで解説!

こんにちは。MathPyCoderです。

主に茶diffの問題を解説していきたいと思います!

今回はABC042-B 文字列大好きいろはちゃんイージーを解説します。

計画

この問題は、文字列を適当な順に結合させたもののうち、最も辞書順で小さいものを求める問題です。

ここで、文字列を結合させるとき、小さい順に左から結合させて行くと求める文字列が得られます。

たとえば、入力例1では、"dxx", "axx", "cxx"という文字列が与えられますが、辞書順最小のものは"axx", "cxx", "dxx"の順なので、辞書順で結合させて行けば大丈夫です。

入力

N, L = map(int, input().split())
S = [input() for _ in range(N)]

$S$は文字列なのでintを通さなくていいことと、$S$が改行つきで入力されることに注意してください。(...僕が引っ掛かったのでこんなことを書いてます)

処理・出力

$S$を辞書順にソートすればいいです。辞書順のソートは実はそのまま.sort()メソッドを使って大丈夫です。

その後配列の全ての要素を結合させるので''.join(S)でOKです!

まとめると

S.sort()
print(''.join(S))

となります。

プログラム

N, L = map(int, input().split())
S = [input() for _ in range(N)]
S.sort()
print(''.join(S))

これで完成です!

今回のまとめ

  • 辞書順ソートはそのまま.sort()が使える
  • 入力のところでバグると悲しいのでチェックしよう