競技プログラミング > 競プロを始める

競プロを始める





競プロ参加に必要なもの

  • メールアドレス (フリーメールのアドレスでもOK)
  • (yukicoderに登録するのなら)TwitterかGitHubのアカウント
  • オンライン実行環境(オンラインコンパイラ)というのを使えば
    ブラウザ上からでも競プロに必要な最低限のプログラミング環境が整う
    パソコンにプログラミング言語のアプリをインストールしたほうがエディタも自由に選べて色々と便利な場合もある
    競プロでソースコードを提出する先はWindowsではなくLinuxというOSなので
    競プロのためにパソコンにプログラミング言語をインストールするならCygwinというアプリをインストールして
    Cygwinのインストーラでプログラミング言語をインストールするのがよいかもしれない
    (※CygwinはLinuxをWindowsで擬似再現できるアプリ)


さっそく始める



競プロで使うプログラミング言語は何を選択すればよいのか

  • 競プロの世界の上位を目指すのなら C++ を選ぶのみ
  • 一般にスクリプト言語(Python,PHP,Ruby,Perlなど)は実行処理速度面で競プロで不利と言われている
  • 暇つぶし的にゆるーくやるなら各競プロサイトで対応してる言語で普段使ってる言語などを選べばよい
  • プログラミング初心者でプログラミング言語がまだ決まってない人は…
    C# か Java8 か Python2 のどれかを選べば無難かな?
    ちなみに世界的には Python が初心者向けプログラミング言語とされているので Pyhton2 でもいいかも

競プロで
使える言語
(の一例)
競プロ向き Windows
アプリ
Linux
アプリ
OSX,Mac
アプリ
iOS,iPhone
アプリ
Android
アプリ
ウェブアプリ(ブラウザ)
CUI GUI CUI GUI CUI GUI サーバー クライアント
C          
C++          
C# (※1)        
Java      
Python2              
Python3              
PHP              
Perl              
Ruby              
Haskell            
Scala          
Objective-C (※2)              
Swift (※2)              
VisualBasic (※1)        
JavaScript
(Node.js)
               
JavaScript
(Other)
             
※0 ... ここは個人的な独断と偏見が混じってるかもです
※1 ... C#とVBはXamarinというアプリを使うとスマホアプリも開発できる
※2 ... Objective-CとSwiftに対応してる競プロサイトは少ない
※3 ... CUIとはコマンドライン(コマンドプロンプトやシェル)で使う文字の入出力処理アプリのこと
※4 ... GUIとはウィンドウが出たりマウスでクリックしたりなどグラフィカルなアプリのこと
※5 ... トランスレータやツールキットなどの様々な便利なものがあるため各言語の空欄のところの処理が出来ないというわけではない
※6 ... 競プロで遊ぶには言語知識だけでも十分なのですが、アプリ開発には言語知識だけでは全く不十分です。要注意です。
競プロでは他にコンピュータサイエンス(データ構造やアルゴリズムなど)の知識や数学の知識もあるとたくさん問題を解けます。
アプリ開発ではOSとアプリの関係やライブラリやフレームワークやデータベースやネットワークの仕組みや標準規格やデバッグなどの知識が作るアプリによってはかなり必要になります。職業の人は上司や先輩からノウハウを伝授されたりします(自主学習を強要する会社もあるようですが)。個人でのアプリ開発は結構大変なので本人のやる気次第です。


競プロ各サイトのおおまか概要


利用登録の仕方の種類

サイト 解説(※1) 非ログイン ゲスト
ログイン
メアドで
登録
Twitter
認証登録
GitHub
認証登録
GoogleID
認証登録
facebook
認証登録
OpenID
認証登録


yukicoder ○(※2) 問題閲覧 提出
解説閲覧
       
AtCoder 問題閲覧
解説閲覧
           
会津オンラインジャッジ ※3 問題閲覧            

TopCoder 問題閲覧    
Codeforces 問題閲覧
解説閲覧
       
HackerRank ○(※4) 問題閲覧      
CodeChef 問題閲覧      
GeeksForGeeks 問題閲覧        
Google Code Jam 問題閲覧            
※0 ... 個人でブログなどで勝手に問題の解き方の解説を書いてたりする
※1 ... 全ての問題に必ず解説があるわけではない。基本的には出題者らによる解説提供になる。
※2 ... 正解解答者による解説もリンクされている
※3 ... AOJ本(TLE本、螺旋本とも呼ばれる)に一部の問題について書いてある
※4 ... 自力で問題を解く前に解説を見てしまうと得点(score)が付かなくなる
※5 ... 競プロにおいて Editorial とは『解説』のことを意味する

対応プログラミング言語1(メジャー言語)

サイト C C++(古) C++11 C++14 C# Java7 Java8 Python2 Python3 PHP PHP7 Perl Perl6 Ruby Ruby2 VB


yukicoder        
AtCoder      
会津オンラインジャッジ            

TopCoder                      
Codeforces        
HackerRank          
CodeChef          
GeeksForGeeks              
Google Code Jam Google Code Jamはソースコードじゃなく答えを提出するので言語は関係ない
※CやC++やJavaはサイトによって使われているアプリ(処理系)が異なるので注意

対応プログラミング言語2(メジャー言語)

サイト Objective-C Swift Rust Go D Lua Nim Kotlin JavaScript
(Node.js)
JavaScript
(Other)
Fortran Pascal COBOL Bash


yukicoder          
AtCoder    
会津オンラインジャッジ                        

TopCoder                            
Codeforces              
HackerRank    
CodeChef            
GeeksForGeeks                            
Google Code Jam Google Code Jamはソースコードじゃなく答えを提出するので言語は関係ない
※Objective-CやJavaScriptやPascalはサイトによって使われているアプリ(処理系)が異なるので注意

対応プログラミング言語3(LISP系言語・関数型言語)

サイト LISP系言語 関数型言語
Common
Lisp
CLIPS Clojure Scheme Racket Haskell OCaml F# Erlang Scala Standard
ML


yukicoder            
AtCoder      
会津オンラインジャッジ                

TopCoder                      
Codeforces                
HackerRank      
CodeChef    
GeeksForGeeks                    
Google Code Jam Google Code Jamはソースコードじゃなく答えを提出するので言語は関係ない
※CommonLispやSchemeはサイトによって使われているアプリ(処理系)が異なるので注意

対応プログラミング言語4(マイナー言語)

サイト Ada Elixir Factor Groovy Icon Julia Nemerle Nice Octave Paicat Prolog Pike R SmallTalk Tcl


yukicoder                            
AtCoder                          
会津オンラインジャッジ                              

TopCoder                              
Codeforces                    
HackerRank              
CodeChef              
GeeksForGeeks                              
Google Code Jam Google Code Jamはソースコードじゃなく答えを提出するので言語は関係ない

対応プログラミング言語5(マイナー言語)

サイト Assemble Awk Brainf**k Crystal Intercal PyPy2 PyPy3 Unlambda Whitespace その他


yukicoder          
AtCoder       Ceylon, TypeScript, MoonScript
会津オンラインジャッジ                    

TopCoder                    
Codeforces               Delphi, J, IO, Roco, Secret, FALSE, Befunge, Mysterious language
HackerRank             LOLCODE
CodeChef          
GeeksForGeeks                    
Google Code Jam Google Code Jamはソースコードじゃなく答えを提出するので言語は関係ない
※0 ... AssembleやBrainf**kはサイトによって使われているアプリ(処理系)が異なるので注意
※1 ... Brainf**kやIntercalやWhitespaceは難解プログラミング言語というお遊び的な言語である
※2 ... CrystalはRubyとだいたい同じ、PyPy2はPython2とほぼ同じ、PyPy3はPython3とほぼ同じ、である


競プロとはちょっと違うけどプログラミングで楽しめるサービス

サイト 非ログイン ゲスト
ログイン
メアドで
登録
Twitter
認証登録
GitHub
認証登録
GoogleID
認証登録
facebook
認証登録
OpenID
認証登録
登録に
メアド不要


CodeIQ          
CODE VS                
paiza POH! 問題閲覧
(Vol4まで)
 
(Vol7以降)

(Vol7以降)
 
(Vol7以降)
   
paiza スキルチェック          
paiza
コードガールこれくしょん
         
Herbert Online Judge(※1) 問題閲覧
実行のみ
             
Turing game Online(※1)                

Project Euler                
CodinGame          
※1 ... 独特のプログラミング言語を使う


競プロ情報リンク(必見)









chokudaiさん直伝の競プロ上達のコツ
https://twitter.com/satanic0258/status/835543239440506881

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2020年03月31日 11:37