【C#】AtCoderでプログラミングコンテストを受けてみた

C#

 

どうも。

 

最近C#の勉強が忙しくてバーチャル関係の記事が全然出せていなくてかなり焦っています。最近はC#関係の記事ばかりですよ。

 

そんなこんなで今回もC#の記事で、最近AtCoderというサイトで10月28日に開催されたオンラインプログラミングコンテスト「天下一プログラマーコンテスト」というものに人生初、参加しました。

 

人生初のプログラミングコンテスト

 

そもそもAtCoderについて知らない人が多いと思うので、ここで簡単に紹介します。

 

AtCoderは、オンラインで参加できるプログラミングコンテストのサイトです。リアルタイムのコンテストで競い合ったり、約2000問のコンテストの過去問にいつでも挑戦することが出来ます。

 

上は、AtCoder公式サイトの文をまんま持ってきただけですが、つまりはそういうことで、「オンラインでプログラミングコンテストができるサイト」ということです。

 

私は最初「オンラインでプログラミングコンテストってどうやるの?」と思いました。

 

その仕組みは単純で、まずコンテストが開催されると問題が出題されます。問題を読んで、コードを書きます。コードは基本的にVisual Studioなどの自前のエディタで書きますが、書き終わったらそれを提出ボックス内にコピペして提出。

 

提出するとすぐにAtCoder側で用意されているジャッジプログラムで審査され、提出したコードの正誤が表示されます。もし間違ってもコンテスト開催中ならば何度でも挑戦可です。

 

これらの手順で、通常複数用意されている問題の中からを好きなものを好きな順番で解いていくことになります。

 

要は解けるものから解いていけるというわけです。ただ問題によって点数が違い、難しい問題ほど点数が高いみたいです。

 

今回私が参加したのは、「Tenaka1 Programmer Beginner Contest」というプログラミング初心者向けのコンテストです。使ったのは当然C#。覚えたての言語を使って記念受験的な感覚で挑戦してみました。

 

問題は全部でA、B、C、Dの4問。

21時に開始され、制限時間100分の中、A、Bは解けましたが、C、Dは解けませんでした。

 

悔しいです。

 

AとBは基本的なC#の知識で解くことができ、使うメソッドや難易度も高くなく、なによりアルゴリズム的な考えをほぼ必要としないサービス問題でした。

 

しかし、CとDではいきなり問題の毛色が変わって、ある程度のアルゴリズム的な考えを求められ、ただ基本的なメソッドを知っているだけではとけない、まさに「考え」の問題でした。

 

”力でゴリ押し”ができない感じ。

 

アルゴリズムやデータ構造については、あまり勉強してこなかったので完全にここの部分でつまずきました。そして同時にあることに気が付きました。

 

AOJでも問題を解いている私ですが、その時はどこかで「今この問題に手間取っているのは、メソッドやそのほかの知識が足りないからだ」と思い込んでいました。

 

しかし、今回このコンテストの問題を解いてみて、「こういう考え方の部分も同時に鍛えていかないと、いくら知識をもっていたとしてもいつかまた今回のように行き詰ってまう」ということに気が付きました。

 

今自分が蓄えているのはあくまでも基本的な知識。

いくら便利な道具を持っていてもそれを使い、能力を左右するのはのは自分の頭(考え方)です。それらのバランスが伴っていないと、貯めた知識も宝の持ち腐れです。

 

ということで、今回コンテストに参加したのは、先ほども書いたように記念受験的な意味と、これからも競技プログラミングに参加する可能性があるのでその経験をしておきたかったからなのですが、日々の勉強の中で何をするべきかを思わず気づかされる良い機会となりました。

 

実は最初少し遅れて参加したんですけど、あきらめないで挑戦してよかった~。

では。

 

コメント