Waffle Advent Calender用の記事です
はじめに
Waffle College2期生のもぐもです!
たまたまつい先日一冊の本を読み終えたので、
この機会に読んで感じた事など備忘録として残します。
タイトルにも上げたこちらの本📚
問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本
3月くらいからつい先週くらいまでの約半年以上をかけて、
週一の頻度で友人と勉強していました。
お互いに数学を専攻しているわけではなく、
私に至っては 中高で数学苦手が強く根付いておりまして、
まず読み終えた今の自分を記録することで肯定しようと思った次第です。
以下は、この本を読む際に誰かの心の支えになればいいなと思い
勉強する際にしていたことを記します。
実践したこと✍
上位二つは本の中で紹介されています。
1. 著者である米田優峻氏のGithubを見る
本の中では、各節ごと、そして最終確認問題ととにかく多数の問題が収録されています。
手元で計算するもの、実際にコードを書くものなどあり、
その回答がpdfやC++/Python/JAVA/Cコードとしてまとめられています。
本の中ではC++でサンプルコードが書かれているので、ぱっと見で理解できない時や、
問題を読んで「いったい何をすべきなんだこれは...」となってしまった時には、見てしまった方が早いです。ほんとに。
2. 演習問題集
1でも言及した問題の内コードを書くものに関しては、こちらのサイトで実際に腕試しすることができます。このサイトのいいところは、実際に競プロでおなじみのAtCoderのサイト上でコードを試すことができることです。なんでいいのかというと、自分に馴染みのあるコードで試せること、他の方が投稿したコードを見ることもできるのでGitHub上に回答が無くてもここでヒントや答えを得られます。
3. あきらめてChatgptなどAIを頼る
結局なんだかんだすごくやってしまっていたと思います。単に解き方に躓くのではなく、問題文を読みながら頭に小宇宙が広がりそこに猫が浮いてるような感覚になってしまうこと、あると思います。ありますよね?
こんな時に怒らず細かい文章への疑問でも壁打ち相手になってくれるのはやっぱりAIです。
「コードをjavascriptに変換してみて」などお願いできるのが、個人的に一番好きでした。他の言語で演習問題集のすべてのテストに通ったとしても、GitHub上の解き方と意図が違っていたりしたらどうしようって思った時にとても役に立ちます。
言語の特性によって、同じようなコードのはずでも計算量などの部分で通ったり通らなかったりすることがあったのですが、その際もその言語で解くときのアプローチなども教えてくれます。実際にテストで通用するかどうかはさておき、単語をたどってネット上で情報を得られるだけでも大きいです。
読んでみて✍
身についた実感としては、leetcodeが解きやすくなったり、解法やアプローチに名前があることを知ったことで勉強しやすくなったことが挙げられます。また、桁の大きい数字に物怖じすることが減ったり、こんな解き方もあるかもと考えることが楽しくなりました。
ただ、読んでいる際にすごく感じていた事は一問一問の消費カロリーがすごく大きいということです。一緒に勉強してくれる友人が居なかったら、積読どころか埋葬していたと思う。♰(ずっと言ってる)
私と同じように苦手意識があるなと感じている方は、一度図などでアルゴリズムの概要をつかむような説明や使用される状況などを見てから読み進める方が、負担が少なく理解しやすいと思います!
じゃあ、準備してから読むほうがいいのか。と、思われるかもなのですが、私は本を読んでみてから準備することをお勧めします。
理由としては、アルゴリズムや数学の解き方をただ知るのではなくて「なぜ数学的考察が必要か」など考え方や解法の見つけ方ついても大事にされているからです。
数学が苦手な方へ
1章⇒2章⇒3章⇒5章⇒4章という順番が本の中で推奨されているので、
途中でわからないと感じたら調べてみるくらいでいいと思います◎
一周目で全部の問題を自力で解くのはかなり難しく感じたので、何度も繰り返し思い出しては本を開いてというように復習を繰り返すことになると思います。くるみさんみたいに自分の勉強したい言語で解いてみるのもかなり勉強になりそうなので、二周目は別の言語でやってみようかなって密かに思ってます。
さいごに
感じたままつらつら書いてしまったのですが、伝えたかったこととしては
数学苦手でもアプローチの仕方を知れば、楽しいと思えるよってことです。
慣れていないと時間がすごくかかってしまって辛かったり、考えることをやめたくなりますが、勉強は自分でペースを作ってするものだし、出てくる記号の意味を知るだけでもモチベーションになります。誰かと決まった時間に勉強するのもかなりおすすめです。
横から本の中の図だけを見て「え、これニュートン法じゃん」ってつらつら数式を書き出す人に劣等感を感じず、狂気のALGO家(詳しくは本を参照して下さい)事情について考えたり、のんびり問題と向き合いましょうね((
良いお年を。
参照
問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本
著者:米田 優峻