完全プログラミング未経験者がPythonを独学してAtCoderで入水するまでの話

高校までの人生でパソコンに触れたといえば、授業でパワポを使ったくらいでほとんど関わりがありませんでした。さらに大学に入ってからも一応、情報基礎みたいな名前の講義はありましたが、高校の授業の延長程度(ワード、パワポなど)でした。また、同学の周りでも『プログラミングやってるよ』という人は聞いたことがありません。そんな中で自分がどのようにして独学でPythonを勉強してAtCoderで入水までなんとかたどり着けたのかの経緯を書きます。誰かの参考になれば嬉しいです!
- Pythonを始めたキッカケ
- Pythonの書き方を何で学んだか
- Pythonの環境開発について
- とりあえずAtCoderで用意されている初心者向け問題(11問)を解いてみた
- ひたすらAtcoder Beginner Contest(ABC)に出るが迷走する
- 練習を積む
- 最後に
Pythonを始めたキッカケ
なんとなくプログラミングをやってみたいなあと思い、初心者にとっつきやすいとされている言語としてPythonが調べたらでてきて、よく分からないけど色んなことができると紹介されていたので始めてみようと思いました。
Pythonの書き方を何で学んだか
まず書き方(forやwhileなどの文法)を覚えないといけないと思い、ネットで調べてみたらProgate(プロゲート)というサイトが出てきました。Progateは、今この世界で使われている主な言語の多くを学習できる、初心者にとっては神みたいなサイトでした(月額1000円くらいです)。自分はPythonを学習しようと決めていたのでPythonの講座を受けました。これで理解できないなら他に手はないと言っていいほどとても分かりやすく作られており、数日でPythonの講座を終わらせることができました。Pythonの他にもHTML/CSSやJavascript、Ruby、PHPなどの講座が用意されており、時間に余裕がある人なら、1000円払えば1ヶ月でもかなり多くのことを学習できるのではないかと思います。ただ、自分もPythonの他にいくつか講座をやってみましたが、それらのことは今すべて忘れてしまってます。初心者の人は一つの言語に絞ったほうが良いかもしれません。Progateの良いところは環境開発がいらない、実際に自分の書いたコードが動く、必要最小限のことを教えてくれる、、、など様々ありました。
Pythonの環境開発について
Progateで基本的な文法は覚えて『よし、自分で何かコードを書いて動かしてみたい!』と思っても、次に壁になりがちなのが環境開発です。環境開発というのは自分のパソコンでその言語が実行できるように整えることです。初心者の人はこの環境開発でつまずいてしまい、コードを書く以前で挫折してしまう、といったようなことを聞きます。幸い、Pythonはこだわらなければ*1環境開発が超楽で以下のサイト(上で紹介したProgateが無料で公開しているサイトです)に従ってやっていけばすぐに終わりました。また、YouTube上にVScode(テキストエディタ)の使い方を分かりやすく説明してくれている動画もありました。
とりあえずAtCoderで用意されている初心者向け問題(11問)を解いてみた
Pythonの文法も覚えて、環境開発も済ませたらまずAtCoder Beginners Selectionの問題(計11問)を解きました。自力では解けない問題ばかりだったのネットで検索して解説や解答を探してきて良さげなやつを自分で真似して書いたりしました。初心者のうちは、正しい解答を見てもそれが何をしてるのかがよく分からないことだらけでした。いくらProgateで文法を学んだといってもそれは超基本の部分だけなので、それ以外の部分は自分で調べていくしかありません。Pythonは書きやすいし直感的な可読性も高いので、分からないことに出会ったときにネットで調べて記事を読んだら理解できるということが多くて初心者にはありがたかったです。
ひたすらAtcoder Beginner Contest(ABC)に出るが迷走する
ひたすらコンテスト(ABC)に出てみました。最初の方はA,B問題を解くのがやっとでした。なかなかレートが上がらずただコンテストに出るだけではだめだと感じ、始めて数ヶ月たって以下の本を買ってみました。そこで初めて再帰関数、幅優先探索、深さ優先探索、二分探索といったアルゴリズムがあることを知りました。これまで闇雲にコンテストに出て迷走していただけだったので、新しい世界が見えた気分でした。しかし、AtCoderや競プロのために書かれた本ではないため、この本を読むだけでレートが上がるという可能性は低いかもしれません。ただ初心者にも分かりやすかったので最初のとっかかりには良かったのかなと思います。
練習を積む
練習を積みました。コンテストに出たり過去の問題を解いたりしました。
- 難易度が★で分類されていて演習しやすかったです。最初は★2に絞って問題を解いていって自分のレートが上がるごとに★の難易度も上げていきました。
- 過去問の解答・解説がPythonで解説されているサイトです。大変お世話になりました。
- dp(動的計画法というアルゴリズムでAtCoderではよく使う)の練習
- 最近出版された鉄則本です。今ままでは蟻本と言われる本がAtCoderの定番本だったがコードがC++で書かれているのでPython勢(とくに初心者)にとってはとっつきにくかったそうです。しかし鉄則本はPythonもサポートされています。
最後に
この記事が『プログラミングやってみたいけど、どうやって始めたら良いか分からん!』という人に届いて、少しでも役に立てれば嬉しいです。