HackerRankのCracking the Coding Interview
HackerRankという、世界中のハッカー(=ソフトウェアエンジニア・機械学習エンジニアなど)が、プログラミング課題を解決するサイトがあります。
そこに「Cracking the Coding Interview」といういかにもコーディング面接対策といった風情のチュートリアルがあるのですが、初心者がプログラミングのためのアルゴリズムを学ぶのに素晴らしい教材だと感じたので紹介します💁♂️
Cracking the Coding Interviewの良さみ
課題の質が高い
まず、かの「Cracking the Coding Interview」(日本では「世界で闘うプログラミング力を鍛える本」)の著者であるGayle Laakmann McDowellが監修しており、課題の質が非常に高いです。難易度設定が適切で、初心者でも考えやすい適度な難易度になっています。
類書などのように「1章からいきなりむずすぎワロタ・・・」となりません🐜たとえば、以下の問題を見てみてください。
入力が1, 1, 3なら出力は3
入力が0, 0, 1, 2, 1なら出力2
などと、入力の中で「1つしかない数字」を見つけて出力せよ
(Bit Manipulation: Lonely Integer)
この問題は、問題タイトルにもある通り本当はビット演算を使って解く問題なのですが、ふつうに特に考えなくともハッシュなどを使えば解答することができますよね🤔
このように、アルゴリズムを知らなくても取り掛かりやすい程度のレベルに調整されています。
世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法~
- 作者: Gayle Laakmann McDowell,岡田佑一,小林啓倫
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/02/27
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (7件) を見る
Cracking the Coding Interview: 189 Programming Questions and Solutions
- 作者: Gayle Laakmann Mcdowell
- 出版社/メーカー: Lightning Source Inc
- 発売日: 2015/07/01
- メディア: ペーパーバック
- この商品を含むブログ (3件) を見る
解説の質が高い
さらに、解答は動画付きで丁寧に解説されていて、コードとにらめっこしていてもわからないようなアルゴリズムのかんどころを視覚的に説明してくれます。
アルゴリズムは言葉で聞くと難しく感じてもビジュアルで理解するとすんなりわかることも多いため、動画が付いてくるのは非常にありがたいです。
以下は上記の問題の解説動画です。ご覧頂ければどれだけ詳しく解説してくれるかわかるかもしれません。
ちなみに、ハッシュを使った解答もビット演算を使った解答も解説してくれていて、「なるほど、そう解けば良かったのか💡」というアハ体験があります。
問題が厳選されている
問題が20問に厳選されていて、短期集中的に取り組みやすいです。私は週末で一気に終わらせました。
書店で分厚いアルゴリズム本を買ってきて「アルゴリズムおおすぎワロタ・・・」となった経験がある方には特におすすめです😇
具体的には、以下の全20題に厳選されています。
データ構造
テクニックおよび概念
単純に解いていて楽しい問題も多いためモチベーション維持にもGoodでした。
議論が闊達に行われている
問題ごとに設定されているディスカッションタブというのを開くと、各言語での実装例や、他の人の解法・考え方を学ぶことができます。
他サイトと比べてもわりと議論がアクティブなため、どうしてもわからないことがある場合があっても質問すれば回答が返ってくることが多いです。私は質問を投稿して半日以内に返信が来ました🙏
おわりに+Python3での実装例
いかがでしょうか?駆け出しのエンジニアで、アルゴリズムの勉強を何から始めようかと迷っている方にぜひぜひおすすめしたいです。
アルゴリズムはプログラミングに登場するさまざまな概念の基礎になっていることが多いので、このような教材で集中的に学んでおくのがよいと感じます。
なお、私はデータアナリストでふだんPythonを使って分析を行うことが多いため、Python3で挑戦してみました。GitHubにあげておいたので、Pythonでトライしてみようという方は参考にしてみてください|д゚)