プログラミング超初心者のためのAtCoder入門【初めての問題挑戦編】

AtCoder

最近、徐々に流行を見せつつあるAtCoderという競技プログラミングサービス。

中には「AtCoderは聞いたことがあるけど、問題をどこで見つけてどう提出すればいいかわからなくて止めてしまった…」という方もいらっしゃるかも知れません。

この記事では、「AtCoderの問題ってどう取り組めばいいの?」「問題を解くために、どうやってデータを読み取って提出すればいいの?」といった基本的な疑問点についてを詳細に解説します。

AtCoderはどうやって登録すればいいの?

AtCoderトップページを開き、右上の「新規登録」をクリックします。

②フォームに必要事項を入力し、一番下の「新規登録」ボタンを押します。

登録が完了します!

登録が完了したら、早速問題を解いてみましょう。

AtCoderの問題はどこで解けるの?

AtCoderの問題を解きたいと思った場合、

①コンテストに参加し、数1000人の参加者と同時にリアルタイムで初出の問題を解く

②過去問を解く

の2つの方法が存在します。

①のコンテストに参加するのがAtCoderにおけるメインの楽しみ方ですが、コンテストは通常週に1~2回しか開催されません。

そのため、今このページを読んでいる方の多くは、今すぐ問題を解こう!と思ったら②の過去問を解くことになります。

過去問はAtCoder Problemsから探そう

実はAtCoderの公式ページには「過去問題一覧」のようなページが用意されていないため、過去問がやや探しづらくなっています。

そのため、AtCoder利用者の大部分はAtCoder Problemsという外部サービスを用いて過去問を探しているのが実情です。

AtCoder Problemsでは画像のように、表形式で過去問一覧を表示してくれます。

AtCoder ProblemsはAtCoderに登録した後すぐに使え、問題難易度の色分けなどがされている非常に便利なサービスです。スムーズに過去問を探すためにも、ぜひ活用しましょう!

AtCoderで実際に問題を解いてみよう!

前置きが長くなりましたが、実際に問題を解いて提出しましょう。

ここでは例として、先ほどのAtCoderProblems画像内の一番左上にある、ABC152 A問題『AC or WA』を解いてみましょう。

どんなコードを書けばいいか、思い浮かびましたか?

この問題では、「Nの値がMの値に等しい時にACとなる」が答えですね。

しかし次に、

「解法がわかったのはいいけど、Nの値とMの値はどこで読み取ってどう取り扱えばいいの?答えはどうやって渡せばいいの?」

という疑問を持たれるかと思います。

これについては、以下をご覧ください。

「渡されたデータを読み込む」(入力)

「問題で要求されている答えを求めるコードを考え、書く」

「答えをジャッジシステムに渡す」(出力)

これがAtCoderにおける全ての問題で必要になる流れです。

では実際にどんなコードになるかを、Pythonのコードを例にとってみてみましょう。

入力されたデータを受け取る

N,M = map(int,input().split())

これでNとMそれぞれの変数に、入力された数値を割り当てることができます。

例えば入力例1であれば、「N=3,M=3が割り当てられる」ということ。

入力欄で与えられるデータの並び方は数多くありますが、こちらのページなどを参照にしながら各問題に合わせたコードを書き、データを受け取りましょう。

求めた答えを出力する

Progateなどの初歩段階を終えた方であれば、これはシンプルなif文で解くことがわかったかと思います。

if N==M:
  print("Yes")
else:
  print("No")

オーソドックスな一例として、このようなコードになりますね。

ここでコード内で「print()」を用いていますが、AtCoderにおいてPythonではこの「print()」によって答えを出力します。

コードが書けたら、提出する

ここまでの手順を踏まえて、最終的に提出するコードは以下のようなコードになります。

N,M = map(int,input().split())
if N==M:
  print("Yes")
else:
  print("No")

これを問題ページ一番下にある「ソースコード」欄に貼り付け、「提出」ボタンを押します。

提出すると「自分の提出」ページに自動的に移動し、問題が正解かどうかの判定が行われます。

提出されたコードが正しい場合は、結果欄に緑色のACボタンが表示されます。

逆に間違いだった場合、結果欄に黃色のエラーコードが表示されます。

エラーコードの種類は幾つかあり、「コードに文法上の間違いがある場合」「文法は間違っていないが、解き方に間違いがある場合」「入力されたコードでは遅すぎて、制限時間を超えてしまう場合」それぞれに応じたエラーコードがあります。

いずれのエラーコードであっても不正解ということなので、エラーになってしまった場合はいったん見直して正しいコードを提出(AC)できるよう修正する必要があります。

 

ここまで一連の流れが掴めたら、さっそくご自身でも問題にチャレンジしてみて下さい!

AtCoderのコンテストに参加してみよう!

AtCoderコンテストっていつ開催されるの?

コンテストは主に、毎週土曜日か日曜日の21時から開催されています。

AtCoderトップページの左欄を見ると、開催予定のコンテストを確認できます。

「最新コンテスト」内の「予定」と書いてあるコンテストが、未来に開催されるコンテストです。

各コンテストは通常1,2日前に参加登録が開始されます。そのため月曜日~木曜日だと、その週に開催予定のコンテストはまだ発表されていないことが多いです。

そのため、今週のコンテストが確認できない…という場合、週末が近づくまでコンテストの発表を待ちましょう。(AtCoderの公式Twitterをフォローしていると、見逃しが少ないです。)

初心者はAtCoder Beginner Contestに参加しよう

AtCoderのコンテストにはレベルに応じて幾つか種類があり、大まかに分けると以下のような分類になります。

・AtCoder Beginner Contest(ABC)→初級者向け

・AtCoder Regular Contest(ARC)→初級~中級者向け

・AtCoder Grand Contest(AGC)→中級~上級者向け

・その他、企業主催のコンテスト(ARC相当の難易度のコンテストが多い)

始めたばかりの方は、このうちまずAtCoder Beginner Contestに参加してみましょう。

(ARCやAGC、特にAGCに関してはほとんどが上級者向けの問題であり、始めたばかりの方はA問題以外は解くのが難しいコンテストとなっています。しかし最初の数回は参加するだけでレートが上昇するので、意欲的な方はこちらも参加してしまって問題ありません。)

AtCoderのコンテスト結果はいつ出るの?

AtCoderコンテストの結果は終了後すぐに出ないことも多く、正式なパフォーマンス/レートが出るのには平均して数10分~1時間ほど待つことになります。

(結果が出るまで待ちきれない!という方は、ac-predictorというユーザースクリプトを利用しましょう。)

コメント

タイトルとURLをコピーしました