たこノすけの雑記

趣味 奉仕活動

プログラミング未経験からAtCoder茶レートになるまで

懲りずにどうもこんにちは。たこノすけです。

 

先日AtCoderで茶色になることができました。

いつからやってんだ?

私はプログラミング未経験でした。

こんな記事に需要があるかわかりませんが、

「プログラミング未経験だけど競プロやってみたい!」

って人のためにプログラミングの学習方法、および茶色になるまで何をやってきたか書きたいと思います。

 

  • プログラミング勉強について 

なんかC++が主流らしかったの「AtCoder Programming Guide for beginners」通称APG4b で学習しました。

atcoder.jp

僕がこれを触っていたときは2章の途中までしか公開されていなかったのでそこまでしか触っていません。全部やるに越したことはないですが勉強だけだとつまらないと思うので1章までやればとりあえず良いと思います。どうせわかんなくなったらその都度調べればよいので。

  • やったこと

  • AOJ 「Introduction To Programming I」

judge.u-aizu.ac.jp

これを最後の4問以外全部解きました。

基本的な実装はこれをこなすとできるようになると思います。わからなかったらヒントみたり他人のコード読むと解き方が理解できます。

  • 過去問

主にABCが6問体制になった後の問題をいろいろ解きました。

f:id:taco_no_suke:20200615190511p:plain

ARCとかもちょこっとやりましたがだいたいこのくらい解いてました。解けば解くほどグラフが埋まっていい気持ちです。(全然埋まってないけど)

ABCのC問題以降は愚直にやるとTELになってしまう問題と多々出会います。そんなときアルゴリズムを使えると問題が解けてうれしくなるのでいろいろ調べました。

 

アルゴリズムとは何か!? ~ 文系理系問わず楽しめる精選 6 問 ~ - Qiita

この記事は必読です。自身のレベルアップにつながりますし、何より面白いです。

 

知っていても使えないと問題解けなくて「人間って、愚かだ…」ってなってしまうので

bit全探索 二分探索 

は少なくとも頑張って書けるようにするとよいと思います。これらを使った問題をたくさん解くと書けるようになります。C問題まではこれくらいしか使った覚えがありません。

DFS BFS DP

とかも書けると強い気がします。僕はあまり使えないです。

  • 人に聞く、記事を読む

解法がわからない問題と出会ったり、何度やってもWAが出ちゃうとき、泣きたくなります。しかし、泣き寝入りはしたくないですよね。そういう時は人に聞いたりネットで調べましょう。

僕は運よくTwitterのffさんに強いお方*1がいらっしゃったので恥を忍んで色々聞くことができました。(まあ初期化忘れのミスだったりするんですが…恥ずかしい)

AtCoderやる人はTwitterアカウント作って強い方だったり自分と同じくらいの人をフォローするとやる気もでるし、解法とかも聞けるのでおすすめです。

ネットは積極的に使いましょう!最強のツールです!

調べ方は、仮にわからない問題が「ABC128 C-Switches」だったら検索欄に[ABC128 Swiches] とか入れてあげると色々でてきます。

問題名だけだと出てこないので注意

解説記事は色々出てくると思うので自分に合う記事を選びましょう。フィットするのが一番いいよね。

  • 最後に

いかがだったでしょうか?(アファリエイトブログのノリ)

最初の画像を見てもらうとわかる通り、実は初めて触れたのは2018年です。その時はPCがオンボロで環境構築も上手くできず、プログラミングもどうやるかわからず諦めちゃって放置してました。

そこからは気が向いたら触っていました。ですが某某某ウイルスのせいで大学の始業が遅れることになりました。何もせずぐーたらするのはまずい、更には情報系の学科なので何かそれに繋がることがしたいと思い、そういえばAtCoderなるものがあったなと思い再開し茶色を目指すことにしました。

そこから約3か月で茶色になりました。僕は凡人なので天才肌の人が5回ぐらいコンテストに出て緑とか水色とかになっているのを見るたび心が(´;ω;`)ウッ…となります。

まああまり気にしちゃいけません。僕なりのペースで次は緑になれるように頑張ります。

おしまい。

 

*1:@kotatsugame_t さん、本当にお世話になっております。この場を借りてお礼申し上げます。

              ここまで見てくれてえらい!たこノすけポイント上げます!