文系卒プログラマが半年AtCoderやって緑にはなれませんでした(反省)

AtCoderを始めて半年ほど経過したので、これまでの取り組みの振り返りと今後の方針をまとめました。

よくあるような色変記事ではないため読む価値が怪しい内容ですが、同じような境遇で壁にぶつかっている方がいたら励まし合いたいです。。。



バックグラウンド

業務でプログラムを書いていますがAtCoderで出題されるようなアルゴリズムや、数値計算が求められる分野のシステム開発ではありません。

競プロでは頻出の整数の性質はマセマの参考書を買って勉強しました(そもそも自分が高校生の時は数学Aで整数の性質という単元はなかったような)。



これまでの取り組み

半年取り組んだ結果、茶色下位のレートで停滞してしまいました。

茶色までは順調にレートが上がっていったので、引き続きしっかりと過去問の精進を続けていれば半年程で緑になれるものだと期待していましたが・・・

f:id:urawa72h:20200829233527p:plain


AtCoder Problemsを利用して毎日数問は解いています。他人と比べたことがないので今までの精進量が多いのか少ないのかわかりません。

f:id:urawa72h:20200829233722p:plain


これまで茶Diffの問題はすべて埋めました。しかし、茶Diff上位の問題は解説ACが多いためあまり身についていない気がします。緑Diff以上の問題も同様です。 f:id:urawa72h:20200829233933p:plain


勉強方法はひたすら過去問の精進です。AtCoderの問題のみ解いておりCodeforcesやyukicoderの問題は解いていません。

20〜30分程自力で取り組み、解法が思いつかない場合は公式の解説やWebで検索したブログ記事の解説等でAC、解説を読んでも理解できない場合は解答を見て写経しています。

Trelloを使って解けなかった問題をカードで管理し、少し期間をあけて自力で解けるようになったら完了、といったように解けた・解けない問題を管理しています。

蟻本は購入しましたが、私には難易度が高かったためあまり取り組めていません。



停滞要因?

AtCoderを始めた頃は開始20〜30分くらいまでにはC問題まで解けていた時期がありましたが、いつからかB問題でも凡ミスしてWAを出したり基本的な全探索を思いつけず長時間かかったりして、安定してC問題まで解けなくなってしまいました。

競プロを始めた頃は全探索くらいしか知らなかったので、何とか全探索で解こうと試行錯誤していてそれが結果につながっていた気がします。

しかし、最近は(大して使いこなせていませんが)精進を通して様々なアルゴリズムやデータ構造を知ってしまったため、本来は全探索で解ける問題も「これはこのアルゴリズムでは?」「これはO(1)では?」といったような解法の当てはめをしようとして、実際はそんな高度なアルゴリズムや解法は必要なく、結果的に解けないといったことが多発していた気がします。

また、(これは完全に私見ですが)やはり大学受験や大学でしっかりと数学を勉強している方は、プログラミングの経験が浅くても競技プログラミングは強い印象です。

問題に対する考察力(発想やひらめき、粘り強く考える力?)が私大文系卒でそれほどしっかりと数学に取り組んでいなかった自分のような人間と比較すると、最初から能力的に差があるように感じます。

過去問精進をしていても「決まった問題に対する解法の暗記」をしているような状態になってしまっており、あまり考察力・応用力を付けられていないような気がします。

以上のことから、C問題まで確実に解けるようなるために、今の自分には初心にかえって全探索から考えることと、実装よりも考察を重視することが必要なのではないかと思っています。



今後の方針

コンテストではあまり良い成績を残せていませんが、問題を解いたりアルゴリズムを勉強するのは業務とは違った新しい知識との出会いがあるため、競プロ自体は楽しみながら取り組めています。

レートを伸ばすという観点では、上記で書いたように新しい問題に対する考察する力が欠けているのが致命的です。応用力や考察力は基礎があって初めて身につくものだとすれば、自分はまだまだ精進量が足りないのかもしれません。

業務で必要な資格や技術の勉強もあるためプライベートの時間を100%競技プログラミングに費やすことは難しいですが、それでもABCには必ず参加しつつ過去問精進も1日2〜3問は継続していきたいと思います。

また、これまでバーチャルコンテストには全く参加していませんでしたが、競技性も楽しみたいので時間の都合がつけば積極的に参加してみたいと思っています。

次の半年で緑にはなりたい・・・



家庭環境について

今年のはじめに第一子が生まれたため、子どもがいない時と比べると圧倒的にプライベートの時間が減りました。コンテストは土日夜なので妻にお願いして何とか時間の都合をつけることができますが、それ以外の平日や日中は拘束時間のあるバーチャルコンテストへの参加がしづらい状況でした。

ただ、こういった家庭環境を言い訳にしていては成長できないので、あまり意識せず自分の時間を捻出することに努めています。そもそも、自分のレートが停滞しているのは時間がないことが問題ではないような気がするので・・・