はじめに
1歳の息子を育てながら、AtCoderを本格的に始めて約1ヶ月が経過しました。 はじめての記事はこちら。
2019年3月9日に開催されたAtCoder Beginner Contest121に初めて参加したり、目標としていたABC042以降のA問題をすべて埋めることができたので振り返ります。
AtCoder ABC121へ初めて参加しました
A 問題の過去問を30問ほど解いて、1問あたり5分以内に解けるようになってきたので、試しにコンテストに出場してみることにしました。
結果は惨敗
息子の寝かしつけを無事に終えて、出場したものの、結果は惨敗でした。現在のレーティングは13です。
なんとか辛うじてA問題だけ正解することができましたが、 39分もかかった上に、3回もリトライしてしまいました。 また、試しに B 問題も解いてみましたが、 標準入力を実装するところで手間取ってしまい、そこだけで時間を使ってしまいました。
結果、コンテストに出場するにはまだ早い、という結論に至りました。
【学んだこと1】過去問はできるだけ穴埋めしてから参加した方が良い
当たり前の話ではありますが、過去問を解いた数と実力は比例するなと感じました。私の場合、A 問題の過去問を30問ほど解いたくらいでは全然ダメでした。特に、標準入力の入力方法については、やり方をググるのではなく、考えなくても問題を読みながら自然と手が動くようになるまで繰り返して学ぶ必要があると感じました。
【学んだこと2】マス目問題に苦手意識がある
ABC121のA問題は、コードを書く前にそもそも問題文の意図が分からず、紙で書きながら10分ぐらい悩みました。さらに、コードを書きながら考えてしまったため、2回も間違ってしまいました。簡単な問題を、自分で難しく考えてしまったようにも思います。
本日、改めて解いてみると、違う解法で5分くらいで解けたので、緊張もあったと思います。
【学んだこと3】初めてのABCで緊張した
息子を寝かしつけてから、21時の10分前には PC の前に着席するようにしていました。いつ息子が起きるだろうかという緊張感と、 初めてのコンテスト出場という緊張感もあり、リラックスして問題を解くことができませんでした。
私の同僚はお酒を飲みながら、 At Coderをやっているということだったので、それぐらい肩の力を抜いてもいいのかもしれないなあと思いました。
今後の対策
これまでの方針通り、 けんちょんさんの以下の記事に従い、ABC042から A 問題と B 問題を全て穴埋めします。
ABC 001 と現在の ABC とでは問題の傾向が大きくかけ離れています!!!!!
従って、まずは問題の傾向がハッキリと固まって来た 2016 年以降の問題を解いていくのがよいと思います。具体的には、ABC 042 ~最新です。
平日に1日1問では穴埋めするのに時間がかかってしまうため、土日も含め毎日1日3問解くようにします。 朝食昼食夕食の後にそれぞれ1問解くように習慣付けます。息子が寝ている間に集中してやれば、意外とできるもんです。
確定申告の提出が無事に終わったので、これからAtCoderの過去問解く。なんだかんだで、平日に1日1問解くペースだったのが、朝食摂る→過去問解く、昼食摂る→過去問、寝る前→過去問で1日3問ペースになってきた。やればできるじゃん!
— Yokoyama Hironori (@yokoyantech) March 12, 2019
【1ヶ月の実績】ABC042以降のA 問題は穴埋めできた
1日3問ずつ解くようにした結果、 ABC042以降のA 問題を全て埋めることができました。
#AtCoder ABC112A問題。1才の息子を育てている自分にはめっちゃツボった。息子と高橋くんが完全にリンクして解答どころではないwwwhttps://t.co/MALF9BS3G2
— Yokoyama Hironori (@yokoyantech) 2019年3月21日
これで全体の6割の A 問題を解いたことになります。三項演算子を使えば、だいたい2行で回答できるようになりました。
ABC121 の挫折から、3月9日以降に急激に問題を解くようになりました。グラフでもよくわかります。
ここまで埋めると、ABC041以前のA問題をすべて解きたいという思いもあります。ただ難易度がかなりバラつきがあるということなので、 まずは ABC 042以降の B 問題を穴埋めしてきたいと思います。
ABC001がAtCoderの標準だと思われてしまう節があるので、ABC001の非表示化を結構マジで検討している
— chokudai(高橋 直大)🍆🍡 (@chokudai) 2018年2月8日
1ヶ月やってみた感想
毎日ブログラムを書くという習慣はとても良いです。日常のふとした空き時間があれば、「AtCoderの過去問やるか」と思うようになりました。育児と妻と過ごす時間を最優先にしつつ、これからも隙間時間を使って過去問を解き続けたいです。
35歳を過ぎてからというもの、仕事以外に育児という重要なタスクが発生するようになりました。ここ半年、毎日息子と2人で眠っており、最近では明け方に私の布団に潜り込んできたり、私に常にすりすりしていないと眠らないようになってきました。かわいい。けど眠い。慢性的な寝不足も感じます。
これから歳を重ねるごとに、仕事の責任が上がったり、炎上している仕事に突っ込まれたり、家族の介護であったり、自分の身体能力の低下だったり、さらに時間に融通がきかなくなってくる可能性が高いです。1日が24時間あっても足りない、という状況になるかもしれません。それでも、隙間時間を使ったり、工夫を重ねながら、毎日コツコツ学びを続けていきたいと思います。
まとめ
ということで、今回ははじめてのABC出場の感想と、AtCoderを約1ヶ月学習した実績について書きました。私の目標はまずは茶色コーダーになることです。これからもB問題を毎日解いて、また記事を書きたいと思います!