![見出し画像](https://assets.st-note.com/production/uploads/images/87538065/rectangle_large_type_2_0937579a92e518febd5111279f6d1a89.png?width=1200)
001 アルゴリズム的思考が身につく!プログラミングコンテストAtCoder入門
#004_001_001 アルゴリズム的思考が身につく!プログラミングコンテストAtCoder入門(2022)
■目次
監修者のことば
まえがき
本書の進め方
第1章 AtCoderとは
第2章 AtCoderの始め方
第3章 初級編~ここからスタート!~
第4章 中級編~典型を徹底マスター~
第5章 計算量
第6章 上級編~本格的なアルゴリズムの世界へ~
レベルアップのためのガイドブック
あとがき
コラム
■第1章 AtCoderとは
◆1-1 AtCoderとは
アルゴリズムに関する問題をプログラミングを使って解くことを競技化したコンテストを主催するサイトおよび企業である。
「もの作りのアイデアを出す」「製品を作る」ことは競わない。
制限時間内に、出来るだけ多くの問題を、プログラミングを使って解くスポーツ
人によってスポーツとして、知的パズルとして、スキルアップ研修として等多様な楽しみ方ができる。
◆1-2 AtCoder上のコンテスト
Web上で誰でも気軽に参加できる
コンテスト開始時刻に問題が開示される
開示された複数個の問題を正しく解くプログラムを提出する
難易度の異なる問題に応じて得点数が決められている
制限時間内(100分程度)に出来る限り多く点数を獲得することを目指す
得点が等しい場合は、より早く問題を解いた参加者が上位になる
提出されたプログラムの採点は完全に機械的に行われる
得点数や解答時間で参加者全員に順位がつけられる
3段階のレベル分け
AtCoder Beginner Contest(ABC):一番優しいレベル
A:100点 プログラミング言語の文法を確認する難易度
B:200点 FizzBuzz問題を応用する感じの難易度
C:300点 計算時間の観点から効率の良いアルゴリズムを設計する難易度
D:400点 典型的なアルゴリズムに関する知見が必要な難易度
E:500点 典型的なアルゴリズムのより高度な適用が問われる難易度
F:500点 典型的なアルゴリズムのより高度な適用が問われる難易度
G:600点 アルゴリズムについての高度な素養や豊富な経験を問う難易度
Ex:600点 アルゴリズムについての高度な素養や豊富な経験を問う難易度
例題
https://atcoder.jp/contests/abc085
◆1-3 AtCoderのレーティングシステム
AtCoderでは、コンテストの成績に応じて各ユーザのレーティングが増減する。レーティング値に応じて「色」が付与される。
高い値
赤 世界トップレベル
橙 日本トップレベル
黄 アルゴリズムに特化した研究開発で重宝される
青 東証プライム上場企業で1人いるかどうか
水 大多数のIT企業でこれ以上のアルゴリズム力を必要としない程度
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
緑 茶の知識を自在に使いこなせる
茶 アルゴリズムの専門書に相当する内容を一通り理解
灰 コンテストに1回以上参加
低い値
※本書が目指すレベルは茶色と緑色で必要な土台作りを想定している。
◆1-4 AtCoderのジャッジシステム
コンテストで出題された問題はいつでも自由に挑戦できる。
問題を解くアルゴリズムを実装してプログラムを提出すると機械的に正誤判定されるオンラインジャッジを採用している。
他の人が提出したコードも読める。
◆1-5 AtCoderで身につくレベル
コンピュータサイエンスに関連したスキルのうち、AtCoderが対象としているものはアルゴリズム力である。
ロジックを組む力
計算時間に関する理解
問題構造を見抜く洞察力
アルゴリズムに関する専門的な素養
アルゴリズム力はあらゆる分野を学ぶ上で強力な下地となる。また問題の構造を見抜くための深い洞察力もコンテストの高度な問題に挑戦することで身につく。
■コラム アルゴリズムとプログラムの違い
アルゴリズムは問題を解くための手順のこと
問題は与えられた入力データから出力結果を得ることを要求するもの
プログラムはその手順をコンピュータ上で実行できるようにしたもの