とくに中学生・高校生向けに、AtCoderのはじめかたを丁寧に解説します。
もちろん大学生・社会人の方もぜひ参考にしてください!
AtCoder の説明
AtCoderとは、プログラミングを用いて戦う頭脳スポーツ「競技プログラミング」のコンテストサイトの一つです。
決められた条件のもとで与えられた問題、課題をプログラミングを用いて答えを出して、その過程や結果で勝負するものを競技プログラミングといいます。
様々なジャンルの出題がされますが、プログラミングや思考力、数学力、知識を活用します。
どのくらいプログラミングできればはじめられるの?
簡単な問題は、条件分岐 (if文) や 繰り返し (for文) を使うことができれば解くことができます。
難しい問題は、数学的な考え方などが必要です。
とりあえず、プログラミングをしてコードを書いたことがあれば、始められると思います。
競技プログラミングをやっていると、どういうときに役に立つの?
- スポーツや娯楽として楽しみ競い合えます
- プログラミング能力や論理的思考力などが付くため、ITエンジニアの一部の職などにおいて、AtCoderでの実力を評価されることがあります
- たとえば、就職する際の面接試験などでアルゴリズムを考えさせられることがあり、そういったものの練習にもなります
宣伝
中学生・高校生の方は、AtCoder Junior League 2024 Summer に参加してみましょう。
https://atcoder.jp/contests/ajl2024summer
賞状やキューブ型のトロフィーがもらえるかもしれません。
登録締め切りが 7 月いっぱいなので注意してください。
宣伝2
私のYouTubeチャンネルです。教育に良いので是非登録してください。
登録
にアクセスします。
右上の「新規登録」から、会員登録を済ませましょう。
(これは普通の会員制サイトと同じなので、詳しくは説明しません。)
ユーザ名は一度しか変更できないので、慎重に選びましょう。また、全世界に公開されるので、注意しましょう。
そのあと、「ログイン」からログインすると、ホーム画面に移動します。
最初の正解を体験しよう!
上のメニューの「コンテスト」をクリックします。
左側にコンテストの一覧が出てきます。
「常設中のコンテスト」には、いつも参加できます。
「予定されたコンテスト」では、これから先に開かれるコンテストが並んでいます。参加登録しておくと、その時間に参加できます。
「終了後のコンテスト」では、これまでに開かれたコンテストが並んでいます。ここから、過去問を解いて練習したりできます。
それでは、とりあえず正解を経験してみましょう。
一番上にある、
Ⓐ◉ practice contest
をクリックします。
(または、 https://atcoder.jp/contests/practice にアクセスします。)
コンテストトップページ下部に表示される青い「参加ボタン」をクリックして参加登録をしてみましょう。
参加登録ができたら、「問題」タブに移動します。
問題のリストが表示されるので、一番上の
A Welcome to AtCoder
をクリックします。
そうすると、以下のものが出てきます。
書いてあること
実行時間制限: 2 sec / メモリ制限: 256 MB
プログラムで問題を解くとき、かかる時間が長いことがあります。また、メモリというものをたくさん使ってしまうことがあります。かかる時間が長すぎたり、メモリを使いすぎたりすると、出す答えは正解でも点数がもらえません。
慣れないうちは実行時間制限 2 秒だけ気にしていればよいです。
問題文
この指示に答えるようなプログラムを書いて、提出すると、点数がもらえます。
制約
主に、問題中にでてくる数字の大きさなどの、問題を解く上での条件を示します。
なぜこんなことが書いてあるかというと、たとえば2個の数字の和を求めるのと、10000000000個の数字の和を求めるのとでは、処理にかかる時間が変わるからです。そうすると、うまくプログラムを書かないと、かかる時間が長すぎて、点数をもらえないことがあります。
問題によっては数字の大きさのほかにも様々な条件が書いてあります。
入力
プログラムに、標準入力を使って与えられる文字を示します。
AtCoderで使えるどの言語でも標準入力をどうにかして読むことができます。
出力
プログラムに、標準出力を使って出してほしい文字を示します。
AtCoderで使えるどの言語でも標準出力にどうにかして文字を出すことができます。
ちなみに、どうやって標準入力を読むのかやどうやって標準出力から出すのかはあまり本質ではないので、ネットで調べてコピペしましょう。
入力例・出力例
入力・出力のところには、aとかbとかの変数をつかって書いてありました。
これだとイメージがつきにくいので、具体的な例が書いてあります。
この例を使って、書いたプログラムがあっているかをある程度は調べることができます。
注意・補足・解答例
これはこのコンテストが練習用なので書いてあります。実際のコンテストでは書いてありません。
正解してみよう
それでは、好きな言語を選んで、解答例をコピペして正解してみましょう。
プログラミングに慣れている人は、自分で答えを考えてみてください。
好きな言語の解答例をコピーします。
特にこだわりがない場合は、実行が早くて使っている人が多い C++ をコピペしてみるとよいです。
コードが書いてあるところの右上の「Copy」をクリックして、コピーします。
下の方にスクロールして「ソースコード」のところに、それを貼り付けます。
その上の「言語」のところで、選んだ言語、またはこだわりがないときは「C++」から始まるものを選びます(バージョンの数字は違う可能性があります)。
さらに下にスクロールして、青い「提出」ボタンを押します。
すると、「自分の提出」に移動したと思います。
提出の一覧にさっき提出したものがリスト化されています。
すぐあとは、「結果」のところに「WJ」と書かれていると思います。これは「採点しています(Waiting for Judging)」という意味です。
しばらく待つと、そこが緑色になって、「AC」と表示されます。これは、「正解です(Accepted)」という意味です。
サンプルをそのまま提出したので、今回は「AC」になると思いますが、もし別のものになっていたら、言語など何かが間違っていたことになります。
詳しくはこちらを見てください。
https://atcoder.jp/contests/abc074/glossary?lang=ja
提出でどのようなエラーが出たかなど、詳しい情報は、見たい提出の「詳細」をクリックするとみられます。
提出する前に答え合わせをするには?
プログラムを書いてみたけど、うまく動くのかわからない。そういう時は、「コードテスト」を使いましょう。
上のほうにあるメニューで、「コードテスト」タブを開きます。
言語を選んで、「ソースコード」のところに自分が書いたコードを貼り付けます。
「標準入力」のところに、テストしたい入力例を貼り付けて、青い「実行」ボタンを押します。
しばらく待つと、「標準出力」のところに結果が出力されます。
もちろん、自分のパソコンでプログラムを動かす環境を作って、そこで動かして確認しても大丈夫です。バージョン違い等には気を付けてください。
今開かれているコンテストに参加しよう!
上のメニューで、「コンテスト」をクリックします。
(または https://atcoder.jp/contests/ にアクセスします。)
「予定されたコンテスト」の中から好きなものをクリックして、青いボタンから参加登録をすると、その時間になるとコンテストに参加できます。
最初に参加するときは、「Ⓐ」マークと青または黒の「◉」マークがついていて、「AtCoder Beginner Contest」がコンテスト名に入っているものを選ぶとよいでしょう。それ以外のコンテストは、難しい可能性があります。
注意点:
コンテストに参加している間は、順位表からわかること以外は言ってはいけません。
不安な間は、コンテスト中TwitterなどのSNSは封印しましょう。
どうやったらむずかしい問題が自分で解けるようになる?
以下のウェブサイトで、問題のだいたいの難しさを調べることができます(公式のものではありません)。
問題の色がこの順で難しいです。
赤・橙・黄・青・水・緑・茶・灰
最初は、灰色の問題から解いてみましょう。
わからないときは、「提出」から他の人の解答をみて考えたり、ネットで解説を調べてみましょう。公式の解説も置いてある場合が多いです。
解けるようになったら、次の難しさの問題に行ってみましょう。
簡単な問題集としてはこちらもおすすめです。
おすすめの本
問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書)
https://amzn.asia/d/09Em3hGo
とても良い本で、簡単に数学の考え方を身に着けられます。
プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~
https://amzn.asia/d/09rKpzLQ
少し難しいですが定番の本で、プログラミングがすでにできる人にお勧めです。