スポンサーリンク

【ABC066】AtCoder Beginner Contest 066 A,C問題 解答・解説【Python】

スポンサーリンク
スポンサーリンク
この記事は約2分で読めます。

A – ringring

3つの数字の合計値から最大値を引くことで解けました。

初めは下に書いているように、リストに格納し、昇順にソートしてから1,2番目の要素を足し算しようしていました。

ただ、一部どうしても正解にならないサンプルがあり、原因がわからなかったので解説を見てしまいました。

 

C – pushpush

方針

・最初に数列Aが与えられているので、解答用の数列をキューを用いて作成。

(deque:デックと読むらしいです。)

・解答用の数列作成の際、操作が奇数回なら先頭、偶数回なら末尾にAの要素を追加。

・解答の出力時、n(Aの要素数)が奇数個ならそのまま、偶数個なら逆順に並べ替えてから出力。

解答

コード+コメント

コードのみ

 

参考

毎回逆順に並べ替えを行った場合、計算量がO(n**2)となるためTLEと解説にありました。

Pythonのリストでソートを行ったときの計算回数が気になったので読み直してみました。

Pythonistaなら知らないと恥ずかしい計算量のはなし – Qiita

 

dequeについてです。先頭と末尾の要素を操作する場合はO(1)となり、リストよりも高速です。

Pythonのデータが「deque」の使い方 – Qiita

その他

他の問題の解説記事一覧です。

【Python】AtCoder Beginner Contest 解答・解説記事一覧 | Best Practice (find-best-practice.com)

コメント