pyhaya’s diary

プログラミング、特にPythonについての記事を書きます。Djangoや機械学習などホットな話題をわかりやすく説明していきたいと思います。

LeetCodeを使ってアルゴリズムの勉強&面接対策

今回は、LeetCodeというプログラミングの学習サイト兼就活・転職サイトを紹介したいと思います。
https://camo.githubusercontent.com/4d21a2a0f2bb751bba6bae08f56fbbb87e0b0460/68747470733a2f2f63646e2d696d616765732d312e6d656469756d2e636f6d2f6d61782f313336302f312a357164504c733478395475616276514a7775376975412e706e67
LeetCode - The World's Leading Online Programming Learning Platform

どんなサイトか

プログラミングの勉強ができるサイトですが、競技プログラミングサイト的な側面と、就活サイトとしての側面も持っているサイトです。利用料は基本的に無料で、本気で職探しをしているのでなければ全然無料で満足できます。

日本でも、プログラミング学習サイトとしてProgateやpaiza(こちらは職探しもできますが)などがあります。しかし、LeetCodeはこれらの学習サイトと比べるとやや難易度が高く、全くの素人のための学習サイトではないという感じです。また、とても多機能で、このサイトだけでいろいろなことができそうな感じです。学習コンテンツに関してはアルゴリズム系が主で、言語そのもののコンテンツとしてはRubyの入門があるくらいです。

機能

アルゴリズム

基本的なアルゴリズムの勉強ができます。一例をあげると次のようなコンテンツが用意してあります。

  • Queue & Stack
  • Binary Tree
  • Hash Table

f:id:pyhaya:20181110185504p:plain

面接対策

企業の面接対策のためのコンテンツも充実しています。しかし、いわゆる「よく出題される問題」的なものは無料で使えるのですが、企業ごとの問題を見たり解いたりするには有料会員になる必要があります。問題が掲載されているのは下のような名だたる企業です。

f:id:pyhaya:20181110185644p:plain

また、疑似面接(Mock Interview)を受けることもできます。こちらだと無料会員は企業名や業種を選択できないという制約があります。

オンラインジャッジ

競技プログラミングサイトのように問題を解くことができます。言語はC, C++ Java, Ruby, Python等色々使えます。出題されている問題は、よくある競プロサイトとは少し違います。というのも、例えばAtCoderではコードは一から作りますが、LeetCodeではクラスが用意されていて、そこに回答を入力していくという感じになっています。普通、競技プログラミングではクラスを使うことはない(?)と思うのでこれは新鮮でした。

ユーザー同士の議論・交流

LeetCodeではDiscussionという欄があって、ユーザ同士が議論したりできます。議論のテーマはざっくり分かれていて下のようなジャンルがあります。
f:id:pyhaya:20181110184535p:plain
また、Articleというタブもあって、こちらはまだあまり使っていないので詳しいことは言えませんが、ユーザー(?)の書いた記事を読むことができます。多くは問題に関する記事であるように感じました。

コード実行環境(Playground)

自分の書いたコードをサイト上で実行することができます。
f:id:pyhaya:20181110190324p:plain
NewでPlaygroundを新たに作ると下のような画面になります。
f:id:pyhaya:20181110190557p:plain
言語もだいぶいろいろ選べます。書いたコードは保存して後で開くこともできます。

まとめ

上で紹介したようにLeetCodeは多機能で、プログラミングの勉強にはうってつけの機能がそろっています。特に、アルゴリズムの勉強がしたいという人には非常に便利なサイトだと思います。