たくあんポリポリ

勉強したことを載せていきます。最近、技術系の記事はZennに書いています。(https://zenn.dev/chittai)

【AtCoder】【C#】三井住友信託銀行プログラミングコンテスト2019の反省

だいぶ遅くなりましたが、三井住友信託銀行プログラミングコンテスト2019のコンテンストに参加して、どのように考え解いたのか、なぜ解けたのか、なぜ解けなかったのかを反省として書き残しておきたいと思います。

はじめに

コンテストへのリンク

atcoder.jp

解いた問題

A,B,C,Dを解きました。Cまでは解けたのですが、Dが解けず。(Bでちょっとはまってしまったので、ペナルティがついて灰色パフォに・・・)

解答説明

A問題

ポイントは、12月→1月に変化するところで、それ以外はM1に+1したらM2になることを確認すればOKです。

実装 AtCoder/A.cs at master · chittai/AtCoder · GitHub

B問題

ここは全探索でときました。たとえば、ある値 i に 1.08 をかけたとき入力されるNになれば i が解答になります。この i を for文で回して全探索したのですが型を double にしてなくて3つぐらい通らないケースが出てきてハマりました。(このペナルティがなければ茶色パフォ行けたと思うのですが、無念。まぁ実力ですね。)

実装 AtCoder/B.cs at master · chittai/AtCoder · GitHub

C問題

100 , 101, 102, 103, 104, 105 の商品があり、ちょうどX(入力される値)円となる買い物ができるかどうか。という問題でした。

ここは、bit全探索で100 - 105 のすべての組み合わせを求めて、Xがその値の倍数になるか調べました。

AtCoder/C.cs at master · chittai/AtCoder · GitHub

D問題

これが時間ないにとけなかったです。ただ、解法みると、ああ・・・となってしまい非常に悔しかったです。

というのも、この問題も全探索(+貪欲)で解くことができます。

ここで求める必要があるのは3桁の整数です。つまり0 - 999 に対して全探索すればOKです。実際のコンテストの時は計算量も考慮する必要がありますが十分思いつけたはずの解法だなと。。。

AtCoder/D.cs at master · chittai/AtCoder · GitHub

感想

まず、基本は全探索というのが守れていない気がする。これは、典型パターンがまだ身についていないので、問題を見るたびに色々と考えすぎてしまう。そいういう意味でも、こういう問題ならこう考える〜といった情報の整理は必要だなと感じた。