こんにちは!サトシ(@satoshi365_blog)です!
この記事では、「競技プログラミング」を紹介します。
と考えたことはありませんか?
僕が使ったことがあるプログラミング学習サービスは、分かりやすいけど、楽しくありませんでした。
でも最近、「競技プログラミング」というものがあると知りました。
調べれば調べるほど、数学が大好きな僕にピッタリのプログラミング勉強法でした!
でも、競技プログラミングに向いていない人もいます。
「それがどんな人か」も合わせて、競技プログラミングについて書いていきます^^
タップできる目次
競技プログラミングって何?

競技プログラミングとは、プログラミングで色んな問題を解いていく競技です。
例えばこんな問題です。
黒板にN個の正の整数A1, … ,An書かれています.
すぬけ君は、黒板に書かれている整数がすべて偶数であるとき、次の操作を行うことができます。
・黒板に書かれている整数すべてを、2で割ったものに置き換える。
すぬけ君は最大で何回操作を行うことができるかを求めてください。
競技プログラミングでは、この問題を解くプログラムを書いて提出します。
楽しくないですか?
「プログラミングをしている」というより、「パズルを解いている」という感じで、控えめに言っても最高ですよね。
どこで競技プログラミングをできるの?
プログラムをオンラインで採点してくれるサイトがあります!
また、一部オフラインのサービスもあります。
他にもたくさん競技プログラミングのサービスがあるので、ぜひ調べてみてください^^
競技プログラミングの良いところ

競技プログラミング良いところはこんな感じです。
- 楽しみながらプログラミングを勉強できる
- 楽しみながらアルゴリズムを学べる
- 色んな言語を勉強できる
それぞれ詳しく見ていきます!
楽しみながらプログラミングを勉強できる
さっきの問題をもう1回紹介します。
黒板にN個の正の整数A1, … ,An書かれています.
すぬけ君は、黒板に書かれている整数がすべて偶数であるとき、次の操作を行うことができます。
・黒板に書かれている整数すべてを、2で割ったものに置き換える。
すぬけ君は最大で何回操作を行うことができるかを求めてください。
例えば、黒板に書かれている整数が「4 8 12」だったとします。
この3つの数を2で割っていきます。
1と3は2で割れないから、ここでストップします。
3つの数を2で2回割れたので、答えは「2回」です。
どうプログラムしたら、この「2回」を計算できるでしょうか?
これを考えるのが競技プログラミングの楽しみです。
楽しみながらアルゴリズムを学べる

アルゴリズムとは、「計算の仕方」のことです。
競技プログラミングでは、提出したプログラムの動作が遅いと「不正解」になります。
だから、余計な計算をしないように、アルゴリズムをしっかり考えないといけません。
つまり、競技プログラミングをすると、遊んでいる間にアルゴリズムが身につくのです!
色んな言語を勉強できる
例えば、AtCoderという競技プログラミングサイトでは、このような言語を使えます。
- C++
- Lisp
- Java
- PHP
- Python
他にも、だいたい50種類ぐらいの言語を使えます。
同じ問題をいろんな言語でプログラムすれば、いろんな言語の勉強になります!
競技プログラミングに向いてない人

競技プログラミングに向いてないのは、こんな人です。
- 数学やパズルなどが嫌いな人
- プログラミングが苦手な人【このブログで解決します!】
- プログラミングが嫌いな人
では、それぞれ詳しく見ていきます^^
数学やパズルなどが嫌いな人
競技プログラミングでは、アルゴリズムを考えるのがとても大事です。
だから、パズルなどを考えるのが嫌いな人は、競技プログラミングも楽しめません。
プログラミングが苦手な人【このブログで解決します!】
競技プログラミングは、基本的に模範解答がついていません。
だから、プログラミングが苦手で、何も分からない人は困ってしまいます。
でも安心してください!!
このブログで、僕が解いた競技プログラミングの問題を解説します。
ここで解説するので、もしプログラミングが苦手なら、僕の記事を読みながら勉強してみてください^^
プログラミングが嫌いな人
プログラミングが嫌いだけど、プログラミングをしないといけない人もいますよね。
残念ながら、そういう人は競技プログラミングには向いていません。
なぜなら、競技プログラミングは基本的にお金を稼げないからです。
プログラミングが嫌いな人は、まずはプログラミング学習サービスなどで基本を勉強しましょう。
そして、クラウドワークスなどで稼ぎながら、プログラミングを勉強すると良いでしょう。
まとめ

この記事では、「競技プログラミング」について書きました。
- 楽しみながらプログラミングを勉強できる
- 楽しみながらアルゴリズムを学べる
- 色んな言語を勉強できる
- 数学やパズルなどが嫌いな人
- プログラミングが苦手な人【このブログで解決します!】
- プログラミングが嫌いな人
僕も今日(2019/12/18)から競技プログラミングを始めようと思うので、プログラミングを勉強したい人はぜひ一緒に頑張りましょう!
競技プログラミングの問題がどんなものか、より詳しく知りたい方はぜひ下の記事をお読み下さい^^

少しでも参考になれば嬉しいです^^