Waffle College一期生のくるみと申します!
私は、11月に (ほぼ)毎日Leetcodeに取り組みました。この記事では、なぜLeetcodeに毎日取り組んだのか、どうやって習慣化したのか、成果として得られたものについて、書きたいと思います。
Leetcode Submissionの草。2024年11月だけ異常に解いている:
[1] Waffle Collegeは、NPO法人Waffleが運営する、全国の性自認が女性およびノンバイナリーの大学生・大学院生のためのテックキャリアを目指すコミュニティです。
[2] Leetcodeは、アルゴリズムやデータ構造の問題を解けるオンラインプラットフォームです。主にコーディング面接対策にも活用されています。
前提として、このチャレンジを始める前の私のレベルは、Easyと簡単めのMediumなら自力で解けるけれど、難しめのMedium~Hardは解説を見ないと解けないことが多かったです。
なぜLeetcodeを毎日やろうと思ったのか
- 外資系企業面接(coding interview)のため
- 新しい言語の練習のため
私は11月前半にコーディング面接の予定がありました!面接ために、重い腰を上げ、2年前にたくさん練習したLeetcodeをもう一度頑張ってみることにしました。
練習の結果、面接ではEasy~Mediumレベルの問題一問を解くことができました。しかし、もう一つフォローアップとして出されたHardレベルの問題は、時間内に実装を終わらせることができませんでした。良い解法は思いついたものの、実装をする時間がなく、残念ながらあと一歩が足りませんでした。私は、そんな自分にやや悔しさを覚えました。(それでも面接は通過したのですが)
そこで私は、面接後もLeetcodeを続けることで、いつか次の機会で発揮できるスキルを身に着けたいと思うようになったのです!これが、11月いっぱい毎日Leetcodeチャレンジを続けようと思ったきっかけです。
もう一つの理由は、新しい言語Kotlinの習得です。応募していた仕事はKotlinを使うポジションでしたので、Leetcodeを解きながら楽しく学びたいと思いました。
Leetcodeを習慣化するために
毎日同じことに取り組む、というのは想像以上に難しかったです。 やる気があるときは集中できますが、そもそもLeetcodeをやらないといけないということを忘れてしまったり、やらないとだと思っていてもやる気が出なかったりします。
毎日同じことを忘れずに、やる気をもって取り組むにはどうすればいいのか考えたのですが、手帳を活用してみることにしました。毎日Leetcodeに取り組んだかどうかを、ガントチャート形式のページで可視化しました。
(取り組んだらチェック✅️してます。てか、ぜんぜん空白がたくさんあるww)
そもそも、私にとって手帳は馴染みのあるものではありませんでした。最近書き始めたばかりです。そのため、私のようなスマホ大好きデジタル人間が、ちゃんと手帳を使えるのかは疑問でした(笑)。しかし、意外なことに、毎晩このちいさな四角にチェックマークを書き込むのは楽しいし、チェックがいっぱいのページを眺めるのも好きです。習慣化において可視化をすることの重要性を実感しました!
心理的ハードルを下げるために
また、毎日取り組むために、心理的ハードルを下げることも意識しました。具体的には、帰宅後疲れているときには、まずEasy問題に取り組むようにしました。そこからやる気が出ればMedium, Hardをやればいいです。
一ヶ月Leetcodeチャレンジの成果
Leetcodeに取り組み続けた結果、以下のような成果を得られました。
- 難しめのMedium問題も自力で解けるようになった
以前は、難しめのMediumは解法すら思いつかないことがほとんどでした。しかし、毎日取り組む中で、適切なデータ構造とアルゴリズムを用いて解法を思いつく力が向上し、Medium, ときどきHardでも解法を思いつき、実装まで終えられることが増えました
- Kotlinという新しい言語を習得できた
初めはPythonで解いていましたが、先に述べた理由で途中からKotlinで挑戦するようにしました。現在までに17問をKotlinで解いています!
新たな言語でLeetcodeに取り組むことで、「あの文法なんだっけ?」となる場面は減りましたし、データ構造の表現方法、idiomaticな書き方も学べました。さらに、便利なライブラリについて学べて良いです。例えば、今日はStringBuilder() の存在を知りました!Pythonにはこういうライブラリ、ないと思う。(リストを使って似たようなことができるけど)
まとめ
11月のLeetcodeチャレンジを通じて、コーディングスキルの向上だけでなく、新しい言語であるKotlinを学ぶ貴重な機会となりました!また、習慣化の工夫や心理的ハードルを下げる工夫を実践し、ルーティンを毎日続けることの実践にもなりました。12月もこのチャレンジは続けるし、2025年も続けたいと思います
明日のWaffleアドベントカレンダーも楽しみ!