アルゴリズムの練習について(Python)Lv.0
こんにちは〜キンキンです! 5月から、わけがあって私はPythonを学んでアルゴリズムの勉強を始めた。 ので!三ヶ月ほどの心得やオススメの本、サイトなども載せます。 初心者は頭から読んで、経験者は飛ばして好きなところを読むといいでしょう。
アルゴリズムってなに?
と聞くよね。そうです、Computer Science の出身じゃないと分からないでしょう笑
普通はそう言います。プログラム=データ構造+アルゴリズム これは嘘ではない、本当です。
データ構造はなに!?
しかし、頭の隅にいれてください。 「 アルゴリズムは普段仕事とか研究用途への実用性が低い。アメリカや中国の企業ではあくまでも就職のとき(面接)質問が出されます。」 しかし、なんで勉強するの?日本企業では聞かれないでしょう?
いや。プログラムのアルゴリズム次第で、プログラムの安定性、スピードが決まります。 おなじく、アルゴリズムを知らないと、余計なスペースを使ったりとか、プログラムを書くときに考えが常に変なところに飛んでしまうのがよくあります。
個人的な感想は、pythonで書いたのですが、C#に戻ると力がついたと実感したので、 練習はおすすめです。
なんでPython?
Pythonは動的な言語です。動的な言語ということは、
Test = 11 Test = '12'
このときのTest
は自動的に数字11に応じて、Test はInt型になる。
そして二行目のTest
は文字列の12に応じて、Test 自動的にString型になる。
かなり自由です。
一方、他の言語はほとんど以下のケースに当てはまる。
int Test = 11; string Test = "12"; ←エラー
まず、Test
の前にInt型を決めてから(箱を作ってから)ものをいれます。
二行目のTest
は一行目のTest
と重なるので、エラーがでます。
もちろん、Python のいいところこれだけではない。 例えば、 文字列の最後の一個を消したい場合(例:"01234567 -> "0123456")
C#系はこれで実行します。
string Test = "01234567"; Test = Test.Substring(0, Test.Length - 1);
一方、Pythonは
Test = "01234567" Test = Test[0:-1]
最後にアルゴリズムによく使われるFor文を使います。今回は数字 13579 を print することにしよう。
C#系はこれで実行します。
for (int i = 3; i <= 9; i += 2) { print(i); }
一方、Pythonは
for i in range(1,10,2): print i
ただ二行で完成します。
Python のrange
関数は、引数3つを使います:
range(始点,終点+1,ステップ)
気をつけないといけないのは、真ん中の終点とステップです。
range(1,10,2):
のように、数列は9までなのに10を指定します。
またステップということは、次の値は今の値の関係を示します。
1 +2 = 3 3 +2 = 5 などですね。
また気づいたかもしれませんが、Pythonでのメソットは「{}」ではなく、インテンドで使います。
他に色々、たとえあListは空なのかどうかを確認するときは、「is not None」を使います。「is not None」は、「!= None」と同じ意味です。
list_ = [] if list is not None
他にも、Qiitaに載っているよい文章もあるし、
コードを書きながら勉強したい場合は、「SoloLearn」というアプリをおすすめします。
なぜ、ここまでPythonのいいところここまで説明したのかは、 Pythonは明らかに読みやすいです。 読みやすいコードは、アルゴリズムを勉強するときに非常に簡単に本質をすぐ掴めます。 ロジックがわかりやすいく、他の人が書いたコードを読み、効率はとてもいいと言えるでしょう。
アルゴリズムの練習サイトってある?
たくさんあります
1・ 英語版ーLintCode www.lintcode.com
初心者はレベルEasyでも難しいと思うので、「Naive」から練習するのはおすすめです。
2・ 日本でとても有名ーAtcoder
ちなみに、使い方は↓からはじめましょう qiita.com
Atcoderは、データの分解から始めるので、実戦に近いです。
3・ GeekforGeeks
このサイトに、テュートリアルもあるので、おすすめです。 Atcoderと同じく、データの分解から始めるので、実戦に近いです。
Pythonの練習サイトってある?
1・ コードを書きながら勉強したい場合は、「SoloLearn」というアプリをおすすめします。
2・ 日本語の書籍もあります
- 作者: 西澤弘毅,森田光
- 出版社/メーカー: 近代科学社
- 発売日: 2018/06/30
- メディア: 単行本
- この商品を含むブログを見る
しかし、この本の後半に書かれているデータ構造は変わった形で練習しているので、
ちゃんと後に自分で初期化(def init (self,))でかけるようにしておきましょう。
3・ Python Tutorial (英語)
以上です! では練習を楽しんでいきましょう〜