【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()が使える
- 入力のところでバグると悲しいのでチェックしよう