Pythonでは、match文を使うことで、switch文のような構文が簡潔に書けることがわかりました。これで同じ変数に対するif
とelif
の繰り返しを避けることができます。
AtCoder Beginner Contest 406 (ABC406)のD問題 Garbage Removalをコンテスト後に正解できたメモ。ゴミの位置は (X, Y)で与えられるが、二次元配列ではなく各rowとcolumn毎にSet
型で保持するのがポイント。
ABC 406は、AとB問題のみ正解できた。しかしB問題のLogを使った判定方法で不正解になった原因を理解できないのでメモ。
AtCoder Beginners contes に参加し始めて、初めて A, B, C, D の 4 問を時間内に正解できました。ここではどのように回答したかを振り返ってみます。
ABC 402 の D 問題Line Crossingの感想戦。平行な直線は傾きが等しくなるが、傾きを計算するのではなく多角形を結ぶ円と接する場所を考えて分類する。この時平行となる接線は2ヶ所存在するので、余りを使うことで1つに集約した。
ABC 402のC問題Dislike Foodsの感想戦。食べられるようになる順番を逆にたどり、食べられない料理の集合を作ることで解決。さらに料理に使われる食材を見て食べられるようになる日に変換することで、よりスマートに解決する方法があることを知った。
AtCoder ABC 401のC問題を時間内には回答できなかったが、簡単そうなのでチャレンジしてみました。方法は簡単だけど、計算時間制限をクリアできず、そこはカンニング。
AtCoderのABC 400のC問題にコンテスト終了後チャレンジしてみた。数学は苦手だけど、aを偶数と奇数の場合分けして考えたら予想外の簡単な計算で答えを求めることが出来た。
D 問題には歯が立たないと思っていましたが、コンテスト後に時間をかけることで ABC 400 の D 問題を塗りつぶしアルゴリズムを使って回答することが出来ました。
AtCoder beginner contest 400に参加して、AとBの問題を正解できました。しかし、見直してみるとB問題 Sum of Geometric Series を正解できたとはいえひどいコードだったので修正した。