こんばんは、しほみんです。
競技プログラミングの話をしたいなあと思います。プログラミングの練習にはうってつけだしアルゴリズム知識が深まって面白いです(業務でc♯使っているのでそれを鍛えることもできる)。
プログラムそのものを書ける人は人材として大事らしいのでプログラムを始めたい人にもうってつけだと思います。
競技プログラミングとは…
制限時間内にお題がいくつか出されるのでそのお題を速くたくさん解いていく。いろんな言語で解くことができる。
この競技プログラミング(略して競プロ)はいろんな運営会社がやっています。いまは日本でやっているatcoderのみに参加しています。将来的にはいろいろやりたいね…
atcoderの場合、大体毎週土日のどっちか21時から2時間程度やっています。忙しいプログラマーでも参加可能な時間帯です。
ここからはいくつか想定される疑問をインタビュー形式で答えてみようかなと思います。
レベルはどれくらい?
今自分は茶色レベルで一応一通りアルゴリズムの知識があるかなあという立場です。
そこそこプログラミングは勉強してきたという立ち位置です。ただもっと上を目指してはいこうと思います。
面白さってなんかあるの?
1.アルゴリズムによって実用的な問題から数学的な問題を解くことができてアルゴリズムの役に立ち方がわかる
2. 単純に競っているので自分がレベルとしてどこにいるかわかる
プログラミングある程度知らないとできない?
全く無知だと厳しいですが、入出力や四則演算最低知っていればとりあえず参加できます。というかこれをきっかけに始めてもいいと思う。最初はリセマラ防止のためスコアが出づらいのでとりあえず参加は大事だと思います。
勉強方法は?
自分は今のところぶっつけ本番のみしかやってないです。ただ解けなかった問題を時間をかけて理解するまでは解きます。
問題っていっぱい用意されているの?
atcoderは今までやった問題をすべて公開してます。atcoderの公式サイトに行けば問題を確認できます。そもそも200回ぐらいやっているのでかなり豊富です。回数も多いのでたまに変な問題もありますが全体的にアルゴリズムの知識を問う良問が多いと思います。(何より解いてて楽しい)
問題の難易度はどれくらい?
Atcoder Beginner Consest(ABC)では比較的簡単な問題が出ます。
現在のABCではA,B問題は基本的なif文、for文を問う問題。C問題は少し工夫したifやfor文の問題、D問題は制限時間内に説くことを意識したアルゴリズムの組み方、E,F問題は高度なアルゴリズムを使って解く感じです。
ほかのAtcoder Grand Contest(AGC)ではかなり難しい問題が出ます。
ABCのCかD問題がAGCのA問題ぐらいに相当して非常に厄介です。B問題以降は難しすぎて解けたことがないです。
今日も参加してきたので明日この話をしようかなと思います。ではでは