AtCoder

AtCoderの紹介

AtCoder_introduction

AtCoder は、AtCoder株式会社が運営している競技プログラミングサイトです。このプログでは、プログラミング言語に慣れるため、もしくはアルゴリズムを学ぶために、AtCoder のコンテストの問題を紹介していました。

今回は、AtCodet について紹介します。また、開催回数が多い、ABC(AtCoder Beginner Contest)についても紹介します。

ABCのフォーマットが変わったため、2023年9月10日に更新しました。

競技プログラミングとは

そもそも「競技プログラミング」とはなんでしょうか。典型的には、以下の手順で進むイベントです。

  1. 参加者に、プログラミング言語を使って解くことができる課題が与えられる。
  2. 参加者は、課題を解くことができるプログラムをサイトに提出する。
  3. 提出されたプログラムの正しさをサイトが採点する。
  4. 解いた課題の数、難易度などから、参加者の順位を決定する。

多くの場合、提出されたプログラムに入力を与えて、想定の出力をするか判定することよって、自動採点しています。

AtCoder は、国内で運営されているサイトとして、最大の競技プログラミングサイトです。

このブログでは、以下の理由で AtCoder を活用しています。

  • 取り組みやすい難易度の問題が含まれるコンテストが、週に1回程度開催されている。
  • 参加者が多く、情報が多い。
  • やはりプログラミングは楽しい!(これは AtCoder に限りませんが)

常設中のコンテスト

サイトにアカウントを登録すると、いつでも参加できる「常設中のコンテスト」に参加できます。コンテストのホームページからアクセスできます。

初心者向けのコンテストを紹介します。

Practice contest

このコンテストを最初に試すことになると思います。以下にアクセスしてみてください。

Practice contest 問題A – Welcome to AtCoder

整数と文字列を入力して、簡単な演算の結果と文字列を出力する問題です。

C++ の解答例です。

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	string s;
	cin >> s;

	cout << a + b + c << " " << s << endl;

	return 0;
}

Python の解答例です。

"""AtCoder practice contest A"""
a = int(input())
b, c = map(int, input().split())
s = input()
print(a + b + c, s)

この問題の下にある欄から、プログラムを提出することができます。提出すると、サイトが自動採点してくれます。「提出結果」→「自分の提出」で結果を確認することができます。

何回でも提出することができます。

C++入門(APG4b)

競技プログラミングでは、実行速度とライブラリが充実していることから、C++ が使われる場合が多いです。

AtCoder では、以下のC++入門を常設コンテストとして公開しています。

C++入門 AtCoder Programming Guide for beginners (APG4b)

一般の C++ 入門コースと違い、AtCoder での利用を意識しています。このため、AtCoder を試したい人には、ちょうどよい C++ 入門になっています。AtCoder に特化している内容についても丁寧に説明されているため、一般の C++ 入門として使うこともできます。

AtCoder Beginners Selection

初心者向け問題集が以下として公開されています。

AtCoder Beginners Selection

Practice contest の問題Aと初心者向けの10問から成ります。

AtCoder は、多くのプログラミング言語で解答を提出することができます。新しいプログラミング言語を学んだ場合、この問題集を解いてみるのが良いと思います。

一般のコンテスト

AtCoder では、主に以下のコンテストが開催されています。上に記載したコンテストほど、開催回数が多く、やさしい課題が含まれています。

  • ABC(AtCoder Beginner Contest)
  • ARC(AtCoder Regular Contest)
  • AGC(AtCoder Grand Contest)

ABC の紹介

取り組みやすい難易度の ABC について、紹介します。

ABC は、週1回程度の頻度で開催されています。毎週土曜日の 21:00-22:40 の100分間で開催される場合が多いです。

このブログでは、ABC の問題を中心に紹介していきます。

注意ですが、“Beginner” とありますが、非常に難しい問題も含まれています。また、世界的に著名な競技プログラマーが参加している場合もあります。

その一方、ABCのA問題、B問題は、プログラミング初心者にも手が届く難易度であり、この難易度の問題が含まれていることが、AtCoder の良さであると考えています。

ABC の歴史

第1回~第125回

ABC は開催された当初は、A問題からD問題までの4題でした。第1回(2013年10月12日開催)から、第125回(2019年4月27日開催)までが、このフォーマットでした。ABC の難易度は、2016年以降に開催された第42回から安定したと考えられているようです。

第126回~第211回

第126回(2019年5月19日開催)から、E問題とF問題が加わり、6題提出のフォーマットとなりました。上限の対象Rateが1199から1999に変更されました。このフォーマットは、第211回(2021年7月24日)まで使われました。

第212回~第318回

第212回(2021年7月31日)から、G問題とEx問題(またはH問題)が加わり、8題提出の問題となりました。

第319回~現在 (2023年9月10日更新)

第319回(2023年9月9日)から、G問題までの7題提出のフォーマットに変更されました。理由については、ABC319で以下のように告知されました。

※今まで ABC で出題予定の高難度の問題がたまっていたため 8 問制にしていましたが、在庫が消化できてきたため今回から 7 問制となります。 F 問題までの難易度は今までと同等となる予定です。G 問題の難易度は幅広く、今までの簡単な G 問題に対応するときから今までの難しい Ex 問題に対応するときもあります。詳しくは各回の配点をご確認ください。

https://atcoder.jp/posts/1100

ABC は、前述のように週に1回開催されています。参加しやすいのですが、難しい問題が含まれています。多くの人にとってすべて解くのは時間的にも非常に難しいです。

最後に

AtCoder と ABC について紹介しました。

競技プログラミングは、競技性があるため面白くもあるのですが、世界トップレベルの実力を持つプログラマーとの差も可視化されます。コンテストの成績は、自分の成長を測るために使い、あまり上の方の成績を見ないことがよいと考えています。

このブログでは、しばらく ABC の難易度が低い問題を紹介していきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA