見出し画像

何にも知らない高1から始める茶コーダーになる方法

実は今回が初投稿になります。”方法”とかいうほざいたこと言ってますが自分もまだまだひよっこなので「そんな感じで茶色になれるんだな~」みたいな感じで読んでくれると幸いです。


競プロ始める前(2024/7)の本人スペック

  • 高校1年生 (地方自称進)

  • プログラミング未経験 (print("Hello World")できないレベル)

  • 寿司打3000円コースぎり元とれる

つまり、時間が少しあったプログラミングについて全く知らない人です。
まぁよくハードオフに行ってジャンクパーツを漁ってたりしてますが…

現在(2025/1/19)の本人スペック


こんな感じで地道に成長しています。ここまで直線的なグラフになってるのはなかなか珍しい気がします。茶色になったのは2024/11/16のABC380の時です。ABC363の時から参加し続けているので18週かけて茶色になりました。



ABCに参加するまで 

APG4b最高!!

いきなりですが後悔したことから言います。それはAPG4bという偉大なるサイトを知らずにABCに参加したことです。プログラミング初めての人がいるのであればまずAPG4bを見てください。
私はpythonとc++が大体同じレベルで使えてますが茶色を目指すのであればpythonから勉強するのをおすすめします。まずは第1章までで大丈夫です。

ABC過去問演習(A問題~B問題)

ある程度文法を理解できたらAtcoder problemという大会の過去問のリンクを張っているところがあるのでそこにアクセスしてください。

ここにあるABCのA問題を難なく解けるようになるまで最新の問題からさかのぼります。持論ですが、A問題ってAPG4bの第1章の内容が丸々出てきてなおかつ少し応用する問題なので、A問題が難なく解けるようになるまで解きまくるのが良いでしょう。

A問題が解けてきたらB問題のチャレンジしてみましょう。自分はdiff30のB問題を解いた後にABCに参加しました。また、APG4bの続きからするのもよいでしょう。参加する時期は人それぞれですが、簡単なB問題が解けた後にABCに参加することをおすすめします。私はABC参加するまでに約1ヶ月かかりました。



ABC363に初参加して

た...高い。まさかC問題まで解けたわけではなく簡単であったA問題、B問題を10分で早解きした結果です。初回はB問題はおろか、A問題まで解けなくてショックを受ける人もいますがまだまだ初回なので気安くいきましょう。

茶色コーダーになるには以下の2つを達成すると目指しやすくなります。

  • A,B問題を早解きをする (目安10分)

  • C問題を解く

C問題を解くとパフォは上がるのは当然ですが、A,B問題を早解きすることでC問題がdiff400超えたときにC問題が解けなくてもパフォーマンスが茶色にのることがあります。特にABC387がその傾向が顕著です。この回のC問題がdiff1249というあたおかな問題(許さん)だったのですが、A,Bを3分で解いたことでパフォ763を取りました。



勉強するべきおすすめアルゴリズム

C問題を解いて3完するにあたってアルゴリズムという考え方が必要になります。茶色になるまでにおすすめなアルゴリズムの一覧がこちらです。

  • 累積和

  • 2分探索

  • bit全探索 or 再帰関数

  • set関数

  • 連想配列

この中では累積和とset関数、連想配列は理解しやすく実装しやすいのでおすすめです。また、bit全探索は理解できなくても実装は簡単なのでこれもまたおすすめです。
おそらく壁になるのは2分探索再帰関数でしょうか。
自分はwebで検索して自分でコードを作って時間がかかりましたが理解しました。しかし、鉄則本(読んだことがない)のほうが理解しやすいのかな?
少なからず自分がした方法は圧倒的に効率悪いのでおすすめはしません。

貪欲法について

これも1つのアルゴリズムですが、おそらく貪欲法を知らなくても実装することができると思います。しかし、知っていて損はないです。

やはり過去問を解きまくれ

茶色コーダーになるにはこれが一番だと思います。

これだとわかりにくいですが、ABC300~からのA,B,C問題は緑diff除いてほとんど解いてます。自分の場合はほとんどが解説を読まずに自力で解きました。しかし、方針は分かったほうがいいので解説やyoutubeなどを見ながら解くのも1つの手です。

そして大会に参加し続ける

大事です(定期)
この記事の最初にレートのグラフがあったと思いますが初参加してからすべてのABCに参加しています。これはさすがにやりすぎですが、1番競プロの能力が上がるのは大会に参加している瞬間なので可能ならば参加しましょう


ABC363~の記録

ここからは見なくても損しませんので見なくても大丈夫ですが、少々付き合ってください。

ABC363~ABC367 rating0→rating115

濃い緑が大会中に解けたもの、緑がのちに解いたもの

この時はまだまだA,B問題は解けてC問題が解けなかったときですね。ABC364で初3完したときはとてもうれしかったのですが、前回のほうが
パフォーマンスが高くて驚いてます。(当時はレートやパフォーマンスについてほぼ無知だった)

ABC368~ABC376 rating115→rating366

濃い緑が大会中に解けたもの、緑がのちに解いたもの

この時からだんだんとC問題が解けるようになりパフォーマンスが茶色にのるようなってきました。特にABC376ではパフォ769と今までで1番高かったです。それにしてもC問題でdiffが緑になるのは本当に許さん。ここまではレートが右肩上がりで下がることはありませんでした。

ABC377~ABC379 rating366→rating333

濃い緑が大会中に解けたもの、緑がのちに解いたもの

ほんとにきつかったときです。
set関数、連想配列をC問題で初めて知る。B問題で初めて沼る。緑diffC問題が提出2分に合わず。ほんと悲惨でしたね。しかし、実力は絶対身についてきてたので気が滅入らずに参加し続けました。

ABC380 rating333→rating419

黄色のところが自分の記録です

初4完!!初緑パフォ!!入茶!!
こんなうれしいことはないでしょう。パフォ973、ratingも86も上がり最高ですね。
このときのD問題は再帰関数を使う問題だったので運がよかったというものもあります。以上。

最後に

そんな感じで無事入茶することができました。
こう見えて高校生なのでプログラミング甲子園に参加したり、そのためにc++を勉強したりする話はまたいつか。もしかしたら入緑する記事のほうが早いかもしれません。それではどこかでお会いしましましょう。



いいなと思ったら応援しよう!