0. はじめに
こんにちは、Shuntaです。
ABC268にて入茶し、ABC332にて入緑しました!!
入茶記事を書いていなかったのでそれと併せて書くことにしました。
競プロ界隈では、Xに色変投稿すると数多くの方からいいねやお祝いコメントを頂けるので嬉しいですね!
1. スペック(入緑時)
- 情報系の大学3年
- 数学検定準1級、基本情報技術者を保有
- 競プロはPythonがメイン
2. 2019年:AtCoderを始めたきっかけ
AtCoderを始めたのは2019年8月24日です。
一般的に友人や先輩、先生からの紹介でAtCoderを始めると思いますが、私の場合は特殊でした。数学が好きだったのでXで数学をやっている人と繋がっていました。
数学界隈のTLに競プロの話が流れてくるようになり、どんなものなのか気になって始めました。とはいえ、プログラミングのプさえ知らない状態だったので独学でPythonの勉強をすることにしました。
当時のABSで提出したPythonのコードを見てみましょう。
a = input("please number")
b, c = map(int, input().split())
s = input("please word")
sum = int(a) + b + c
print({} {}.format(sum, s))
標準入力でわざわざplease number
と聞いているのが可愛いですねw
本当にプログラミングのプさえ知らない状態でした。
やはり、難しいと感じたからなのか半年程度でやめてしまいましたが、それから3年後に再開するとは思いませんでした。
3. 2022年上半期:AtCoderを再開したきっかけ
私が大学2年の頃に学科内でも競プロが認知されるようになり再開しました。運の良いことに学科内での競プロ勉強会も開催され、モチベーション向上に繋がりました。
大学1年の頃に授業でJavaを勉強したこともあって、2019年の頃に比べるとプログラミングの知識は身についていました。やはり、基本って大切ですね。
4. 2022年下半期:入茶!!
入茶するために必要なことはプログラミングの基本を身につけることと、AtCoderに慣れる(参加回数を増やす)ことだと思います。特に、C問題を解けるようになることが重要だと思います。
5. 2023年上半期:アルゴリズムの勉強
入茶してからは、アルゴリズム力がないと厳しい問題に遭遇することが多くなりました。
アルゴリズムを勉強する上で、けんちょんさんの鹿本は良かったです。
入緑までに身につけたアルゴリズム(習熟度は省略)
- bit全探索
- 二分探索
- BFS(幅優先探索)
- DFS(深さ優先探索)
- 累積和
- DP(動的計画法)
- 素数判定
6. 2023年下半期:入緑!!
入緑するために必要なことはABC3問の早解きか、ABCD4問を解けるようになることだと思います。そのために次のことを心がけました。
- A問題やB問題を沢山解く
- コンテスト終了後に自分の解法をXに投稿する
- 周りにいる競プロerと解法についてアウトプットし合う
- 競プロ勉強会に参加
7. AtCoderに取り組んだ結果、起きたこと
7.1 他言語に触れ始める
入茶してからHaskellなど関数型言語を中心に様々なプログラミング言語に触れるようになりました。他人のコードを見たり、公式解説のコードを見たりしているとどうしても他言語を学びたくなります。
提出数が100を超えている言語を挙げると次の通りです。
- C++
- Haskell
- Java
- PHP
- Python
7.2 コードを書く習慣が定着する
ABCコンテストは基本的に毎週土曜日に開催されているためコードを書く習慣が身につきやすいです。次第に毎週土曜日だけではなく、毎日書くようになりました。以下の画像を見てみると157日連続取り組んでいることが読み取れます。
7.3 アウトプットするようになる
次のような記事を書きました。
7.4 物事に対する考え方が変わる
競プロで養われたアルゴリズムそのものが直接役に立つ場面は少ないかもしれませんが、間接的にはめちゃくちゃ役に立つと感じています。物事に対する考え方が柔軟なものになったように感じます。
8. 今後について
学生のうちに入水を目指します。そのために必要なことは以下の3つを意識することだと思います。
- アルゴリズム力
- 早解き力
- 数学力
9. 最後に
競プロは楽しいぞ!!AtCoder最高!
最後までお読みいただきありがとうございました!