今年1月にLeetCodeを始めてかれこれ5ヶ月経ちますが、解いた問題数が300問に達しました。ここまでのやり方や手応えを書いていこうと思います。
途中1月はネスペの勉強と半々、2月中旬から4月中旬にかけては完全にネスペ対策に集中していたため、全く解いていない期間があります。実質的な期間としては2.5ヶ月といったところです。解き方としては
- 問題のカテゴリからその日解くものを選択
- acceptanceを簡単な順にソート
- easyを4問肩慣らしとしてやったあと、mediumを4つ
というふうにやっています。カテゴリ名が解法名になっていることが結構あり、また、関連する問題を連続して解くので前の問題の解を少し変更すれば次の問題が解けたりします。そういうチートをやっているので一日で解ける問題数が平日でも8問とかになっています。
チートをやることで学習効果が下がったかというと、むしろ上がった気がしています。当初、1月は問題番号順に解いていました。この場合、題材がバラバラかつ手法のストックも無いので、解くたびに新規の手法が出てきて、マニアックな手法なのか思いつきべきものだったのか判断が付きませんでした。そのため、
- 覚える価値がわからないのでしっかり暗記しようというモチベーションが出ない
- 問題処理のスループットが上がらない
- 漫然と解く
- 同じ手法を繰り返し練習できない
という状態になりました。
これはちょっと時間効率が悪いね、と思ったのでまず手法のストックを練習しながら増やす作戦を取ることにしました。それが前述の解き方です。この解き方に変更したことでストックを増やすという目的は達成できつつあると感じています。木のトラバーサル、バックトラッキング、二分探索、プリフィックスサムなど基本的なところはだいぶわかってきたと感じます。ただ、実感としてはmedium余裕というには程遠いです。mediumのacceptanceが60%台位になってくると40~50分ほどはかかってしまいます。カテゴリを知っていて、自宅で黙ってリラックスした状態でこれなので、全然実力不足って感じですね。20分程度でランダム出題のmediumをさばけるレベルになるまでは頑張っていきたいです。
また、easy問題は明らかに簡単すぎるので300問を超えたこの節目で解くのをやめることにしました。どんどん解いた問題数が増えるのは精神的に気持ちいいですが、自分をごまかしすぎるのもあまり良くないからです。
このペースで行けば7月末あたりには結構イケてる状態になるんじゃないかと思っています。誰も応援してくれませんがとにかく自分の将来のために頑張っていこうと思います。とにかく努力。時間を惜しんで努力。人生を諦めない。このまま終わらない。
コメント