はじめに
久々に競技プログラミング記事を書きます。AtCoderを本格的に始めて約7ヶ月が経過しました。 とはいえ、この7ヶ月間毎日取り組んでいたわけではなく、全く取り組めていない月もあります。育児の合間にコツコツ過去問を解いてきました。そのため精進量としてはまだまだ微々たるものです。
【実績】ABC の A 問題142問を全て埋めました。
私はRubyでAtCoderをやっています。けんちょんさんの記事にもある通り、当初は難易度が安定してきたと言われる ABC 042以降の過去問のうち、A問題とB問題を解くようにしていました。
従って、まずは問題の傾向がハッキリと固まって来た 2016 年以降の問題を解いていくのがよいと思います。具体的には、ABC 042 ~最新です。
しかし、周りの人達を見ていると ABC の過去問はAからDまで全て埋めている人が多く、私もA問題から埋めていくことにしました。
今後、ABCが開催されることで、全埋めではなくなると思うので記念にキャプチャしておきます。
だいたい平日は、1〜3問解くようにしています。息子の寝かしつけ中に一緒に寝落ちする日もあるので安定しません。
7月と9月が全く取り組めていないことがよくわかります。7月はRuby Silver受験のためお休み、9月は仕事と新規事業企画コンテストの準備で忙しかったです。
A 問題を埋めた感想
A問題なんて簡単すぎる、という人もいるかもしれませんが、私は全て解いてよかったです。A問題であれば1分くらいで解けるようになりました。A問題を100問以上解いたのだから、A問題なら大丈夫!という自信もついてきました。 結局、地道な努力を積み重ねていくしか無いと思っています。
子育て中でも地道にコツコツ頑張れば埋められるものだなと実感できたのは非常に大きかったです。1ヶ月程度で ABC問題を全て埋めてしまって、次のステージに進む人も身近にいますが、私は私なりのペースで楽しんでいきたいと思います。他の人と比べるというよりも、過去の自分と比べてどう成長したかを大事にしたい です。
また、短くてもコードを書くという習慣が身についたのは非常に良かった です。書いたコードは github にコミットするようにしています。私はSIerに勤務しており、プロジェクト管理が業務の中心になってくると、なかなか業務時間中にコードを書く時間を確保することができません。そのため、AtCoderの問題を解くことでコードを書く時間が確保できるいうのは非常に有難いです。
A問題は、基礎中の基礎であるため、基本的に問題を読んでその通りに書けば、正解することができます。Rubyだとだいたい1~3行程度で書けます。それでも工夫のしがいはあって、複数行の入力値を受け取る場合、何度もgets
メソッドを書くのではなく、 times
メソッドを使って1行で書くようになったりしました。
最近の天気の問題であれば、こんな感じ。
ss,ts = 2.times.map{gets.chomp.chars} count = 0 ss.zip(ts){|s,t| count += 1 if s == t} puts count
直近の目標
茶色コーダーを目指します。 A問題を全て埋めることができたので、次は B問題を全て埋めたいと思います。
まとめ
息子が魔の2歳児に成長しつつあるため、今後もまとまった時間でコードを書くことは難しそうです。それでも息子が昼寝をしている時間や、会社の昼休み時間などを使って、地道にコツコツ腕を磨いていきたいと思います。