AtCoderの水色を、プログラミング初めて1年で取った私のやり方

 

前書き

この記事は、ゲームが大好きな私が「プログラミング知識ゼロから」たった1年でAtCoderで水色を取れたことを振り返り、その時のやり方などをまとめたものです。主に、プログラミングを始めて日が浅い人向けの文章や具体例を用いているつもりです。誰かの今後の方針のきっかけになれば幸いです。

 

ただ、かなり思想的なお話になり、アルゴリズム方面が無いことはご了承ください。

注意事項

水色になるまでにやらなかったこと、知らなかったことは全部省いています。あくまで、やったことを中心に綴るスタイルで行きます。

軽い自己紹介

2525toaといいます。twitterIDも同じです。はてなブログでは数字を先頭に出来ないのでtoa25にしました。

水色になった時点では、競技プログラミング(Python)と、ゲームプログラミング(C++)をしていました。後は、大学の宿題に追われて連日しくしく泣いたりしています。

 

 

本題

凡そ時系列順に、やったことを並べていきます。

きっかけ

私がプログラミングを始めたきっかけを少し。

高校まではプログラミングはしていませんでした。ニコニコ動画は見てました。

大学入学後、大学のサークル漁りをしていたときに、何となく好みの看板キャラクターを見つけて、チラッと覗いたサークルがありました。そのサークル内にプログラミングをしている部門があったので混ざっていきました。

 

ゲームプログラミング

1.やったこと

私はゲームが大好きです。そのため、ゲームを中心にプログラミングを始めていきました。その時に使ったサイトの代表例は以下の通りです。ゲーム好きの方は、是非目を通してみてください。

ちなみに私は、水色になるまでに以下のようなゲームを作っていました。
(この年、引越し2回あったり、サークル4つ兼サーして忙しかったんですorz)

 

2.やってみて分かったこと

単刀直入に言います。

 

「好きなものを中心にプログラミングを始める」

 

私はこれが一番大切だと思います(異論は認めるし、否定はしない)。
理由は凄く単純で、挫折しにくい気がするからです(要出典)。
挫折しにくいと沢山良いことがあるのですが、一つ上げるならば、

 

場数を特に多く踏める ⇒ 経験値が早く溜まる(RPG脳)

 

でしょうか。これに関する理由を聞きたい方は少ないと踏んで、これ以上は省略します。とりあえず好きなものがあれば、それを中心にプログラミングを始めてみてはどうでしょうか。


競技プログラミング

1.やったこと

私が競技プログラミングを始めた理由は、pythonの深層学習に興味を持っていたからでした。コミュ障なので、対話botを作ろうとしていました。プログラミングを始めて5ヶ月ぐらいのときのことです。

使用サイトはpaizaでした。ブラウザ上でプログラミングが容易に出来る点、入出力テンプレートが自動表示な点で選択しました。時々イベントで、ゲームっぽく解けるときもあるのが楽しかったです。イベント合わせて、凡そ50~60問解いていました。7割前後がC,Dランクでした。

 時々、CheckiOも十数問程度解いていました。

最終的に、AtCoderを知ったのは、プログラミングを始めて10ヶ月ぐらいのときでした。水色になるまでに30問近く解いていました。

2.分かったこと

大体自分が競プロで問題を解いて行って、どういう流れが好きかが分かったので以下に載せます。

  1. 最初は、今の自分で解けるものを解く。
    自分の現状の実力を把握することを目的とする
    (おまけで精進が出来るくらいの気分)。

  2. プログラミングの世界のイメージを少しでも理解できるようになると強い
    数学ガールの恐らく1作目の、2つの世界の行き来の話を参考)。

  3. 次に面白そうな問題を解く。
    マンネリ化を防ぐため。たまにぶつかる難しい問題で強くもなれる。

  4. 最後に、一般に言われる精進の方法を参考にしていく。

おまけ.競プロが続けられた理由
  • 研鑽する仲間を作りやすい(Twitterで顕著)
  • 頻繁にコンテストがあり、例えばテスト直前にしか勉強しない人でも、精進がしやすい
  • コンテストは基本2時間前後なので、メリハリをつけやすく、闘争本能をくすぐられる(そしてACが出る)
  • プログラミングに娯楽の側面を生み出してくれる
  • 楽しいことに理由は不要

 

まとめ

一般論は大事だし、能力は上がりやすいのかもしれない。

他の人の方法論を学んだり、講座を受けたりすれば、強くなれるかもしれない。

ただそれは、続けられなければ、そもそも話にはならない。

 

そこで、一つの提案として

好きなもの中心のプログラミング

を出します。

 

今、私は、競技プログラミングが好きです。だから続けます。

AtCoderの水色を1年で取ったわけですが、それは結局の所、

好きなものでプログラミングをしたから、能力を高められた結果だと思っています。

 

これからプログラミングをする人は、好きなもの、ことを沢山見つめて欲しいです。


この記事が、私達の転換点となりますように。