アルゴリズムという言葉をご存じでしょうか?
それはプログラムでどう処理すれば正解となる答えを導き出せるか
下記の画像が、問題の一例
今回はプログラミングの中でも、アルゴリズムを考える力を身に着けようと
競技プログラミングが行われているAtCoderというサイトで、己を磨いていこうと思います。
興味のある方は以下画像をクリックするとページに行けます
競技プログラミングということで、大会が毎週末とか開催されており、そこで提出される課題をアルゴリズムを考えてスコアを競い合います。
現段階では、まったく解けないので、
こちらのAtCoder Problemsというサイトが本家の過去問をずらりと閲覧でき、この問題を勉強しつつ解きつつ。
本家で登録したID(左上の****のところ)に入力すると
データが照合されて、自分が回答した問題に色を付けてくれます。
埋めていく感覚は、なんだかワクワクしますね。
大会では、出題数7問(A~G)を制限時間100分で競います。Aが低難易度、Gにいくほど高難易度の問題。今の私では、なんとかB問題が解けたり解けなかったりるぐらいです・・・難しいですね!
アルゴリズムって、なにそれおいしいの ( ゜∀ ゜)?って話ですけど、
私の範疇では、A問題か、それ以下レベル程のしか使ってこなかったです。
人が手作業で行う内容を、フローで考えて、プログラムや電子工作にしていくっていう、自動化して効率的にすることが主でした。
ですが、ちょっと趣をかえて、プログラム的思考力というのでしょうか、それを養うために
アルゴリズムを駆使するAtCoderをやっていこうと思い立ったわけです。
言語はPythonでやろうとしています。Pythonはライブラリが充実しており汎用性・実用性は高いと認識。あとアルゴリズム知らなくても、ライブラリ探して使えば事足りるっていうのが、にわか程度の私の使用範囲でした。また大概の人が当てはまることだと思います。
と、いうのも。
AtCoderではランクがあり、
赤・橙・黄・青・水・緑・茶・灰・黒と色付けされますシステム。赤が最高ランク、黒にいくほど低いランクで黒は参加登録すれば振り分けられる入門ランクです。
プログラムをバリバリされる方で、青いけば優秀な部類。水色がエンジニアとして十分。
緑が上位30%で、アルゴリズムに対し熱心に学んできた人たち。あたりと公式に紹介されていました。
簡潔で速度がでるアルゴリズムが書けなくても、大概においては問題にもならないです。
私のような作業の自動化みたいな用途においては、早いに越したことないですが、数秒だろうと処理が遅くても、損失は生まれません。
ですが、多くの人が利用するサービスのアルゴリズムの処理が悪いと、
利用者数の掛け算で、サービス用に用意しているリソーセスを圧迫します。その分、処理能力を別のお客さんに回せるかもしれませんし、スペックを落として経費が下がるかもしれません。
そんなところでは、ランク上位の方の力が存分に発揮される、とプロフェッショナルな方が言っていました。なるほどですね。
どこまで行けるのか、頑張っていきます!
コメント