自己紹介
私は、文理融合を謳う地方国公立大学に通う情報系の3年生です。高校まで、プログラミングを行ったことはなく、授業で少しじゃんけんをするプログラムをpythonで書いたくらいです。
そんな自分が、大学で情報系に入学し、何もしないまま3年生になりました。
さすがに何かしたいと思っていたが、作りたいものもなかったので、AtCoderをやってみることにしました。自分は昔から数学などの問題を解くことが好きなのでもしかしたらと思い始めました。
目次
1. はじめに
AtCoderと呼ばれる競技プログラミングのコンテストサイトに参加し、レートが400を超え茶色になることができました。
https://atcoder.jp/?lang=ja
一般的な大学生が、入茶するためにしたことや、するまでにかかった期間などを紹介するものです。効率良くない部分などもあると思うので、参考程度に、ご自分で工夫してみてください。
2. 取り組んだこと
① APG4b
なんの知識もないままコンテストに参加し、A問題のみACとなってしまい期間を開けてしまいました。
言語はC++で解いているのですが、触ること自体初めてだったため、C++入門 AtCoder Programming Guide for beginners (APG4b)をex17まで行いました。(どこまで解けば十分なのかわからず適当にやめました。今の自分なら3章(ex26)までやってもよかったかもと感じています。)C++に触れたことがあって書き方はわかる人は飛ばして良いと思います。
https://atcoder.jp/contests/APG4b
② problems
次に取り組んだのは、problemsでA問題を最近のABCの問題から解いていきました。
https://kenkoooo.com/atcoder/#/table/
それが慣れてきたらB問題にも挑戦していきます。A問題を計10問ほど解いてからはA,B問題を解くようになっていたと思います。
そのまま、A,B問題をABC350くらいまで解きました。このころにはB問題を解くことへの自信も出てきて、C問題を解けるようになりたいと思うようになりました。
③ novisteps
上から順にC問題に取り組もうとしますが、手が付けられまんでした。そのため、C問題の中でも優しい問題から手を付けるべきだと思い、novistepsを行うことにしました。
https://atcoder-novisteps.vercel.app/
novistepsでは、問題集>カリキュラム>7Qから順に進めていきます。
ほとんど解き、次に6Qに進みました。
こちらもほとんど解き切りました。
7Q,6Qの問題はA,B問題が多いので、problemsで最近のものからA,B問題を解くのではなく、はじめからこっちを解いていてもよかったのではないかと今では思っています。
その後、一覧表>グレード別>5Q,4Qと進み、今4Qを解いています。それぞれ全部解くのには量が多いので、適当なところで、4Qに進みました。
④ 鉄則本
夏休みに入ってから、鉄則本を購入し,最初から進めていきました。大学の授業でアルゴリズムを少し勉強していたため、
- 全探索
- 動的計画法(DP)
- 幅優先探索(BFS)
- 深さ優先探索(DFS)
- ダイキストラ法
- トポロジカルソート
このくらいのアルゴリズムの内容は何となく理解していました。しかし、実装したことはなかったため、全探索以外初めての実装でした。
鉄則本のそれぞれの章で、はじめの方の問題は易しめでアルゴリズムを学び、理解できれば問題なく解ける問題でした。そのため、躓く問題まで進み、躓いたところで次の章に飛ばしました。
やる気がなくなるよりはこの方法でも浅く広く学ぶことができるので、現在の自分には難しい人と感じている人には、良い方法ではないかと思っています。
3. 現在の解答状況
現在はnovistepsの4Qと鉄則本を主に行っていて、火・水・木に忘れていなければAtCoder Daily Training(ADT)に参加しています。
https://atcoder.jp/contests/adt_top
早解きのためにも最近はC問題の対策ばかりなので、A,B問題を解く良い機会だと思います。
水コーダーさんなども参加しているので、意味はあると信じています。
4. これから
今後、C問題を安定的に解けるようになり、D問題E問題に挑戦できるように精進していきたいと考えています。そのためにまず、鉄則本を飛ばしてしまったものも含め、一通り終わらせたい。
その後、今の段階では、典型90をやるのがよいのではないかと考えています。
Xでコンテストの結果を投稿しているので、一緒に切磋琢磨しましょう!!
また、はてなブログで一週間ごとに自分の日記的なものを投稿しているので、そちらも見ていただけると嬉しいです!
https://ryoend.hatenablog.com/
ネットで友達を作ったことがないので、関わり方がわかっていませんが、いいねやリプをくれる人は大好きです。いつもありがとうございます。