みなさん、こんにちは。
セカンドセレクションのNakataです。
春になり過ごしやすい季節となりましたが、あまり外出出来ない状況が続いていますね。
そんな中、私はプログラミングのスキルアップを目指し、日々頑張っています!
このブログでは、プログラミングスキルをあげたいけど一人ではなかなか継続しない方へ向けて、私が行っている「競技プログラミング」について紹介したいと思います!
私は1年ほど前からPython を習得するため、「競技プログラミング」を始めています。簡単に参加できるため、始めるのに遅すぎるということはありません。プログラミング初心者の方は積極的に参加されるとよいと思います!
競技プログラミングとは?
競技プログラミングとは、「与えられた課題に対して、プログラミングを用いて解く競技」です。
競技プログラミングにはいくつか種類があり、2~3時間程度で問題の解く速さを競うものや、数日かけてより良い作品を作るものなど、競技の形式は様々です。
競技プログラミングと聞くと、プログラミングの得意な人が多く参加するイメージがあるため、プログラミングをあまりやったことがない、初めたばかりの人には難しいと思うかもしれません。しかし、競技プログラミングは誰でも参加することができ、プログラミングを少し学べば解けるものもあるため、初心者でも十分に楽しむことができるものとなっています。
競技プログラミングに参加すると、問題を正確に把握する能力が上がったり、コーディングの速度があがったりと自分のプログラミングスキルの向上にもつながります。
このブログを読んで競技プログラミングをやってみたいと思った方はぜひ参加してみてほしいと思います!
おすすめの競技プログラミング3選
競技プログラミングを始めたいけど、どの競技プログラミングに参加したら良いのかがよくわからない方も多いと思います。そこで、私がおすすめする初心者でも始めやすそうな競技プログラミングを3つご紹介します!
AtCoder
「AtCoder」は日本の中でも特に有名な競技プログラミングサイトの一つです。
このサイトでは定期的にコンテストが開催され、指定時間内に解くことができた問題の数や問題の解く速さを競うものとなっています。
このコンテストの良いところは、初心者向けのコンテストが定期的に開催されていること、コンテスト終了後、Youtubeによるライブ配信での解説が行われることです。
コンテストに参加すると自分の記録がレートで評価され、良い記録を出せば出すほど、この評価が上がる仕組みになっており、自分のプログラミングスキルの成長が実感しやすいです。
私が実際にAtCoderに参加しているので後述します。
Paiza
「Paiza」は株式会社ギノが運営しているエンジニア向けの転職サイトですが、その中にプログラミングスキルチェックというものがあります。このスキルチェックではS~Dと難易度別に問題が用意されており、自分のプログラミングスキルをはかるだけでなく、その実力を企業にアピールすることができます。
また、プログラミングスキルをはかる以外にも動画を観ながらプログラミングを学べる講座が用意されているため、プログラミングの基礎学習や苦手な分野の克服にも活用できます。
Aizu Online Judge
「Aizu Online Judge」は会津大学が運営しているプログラミングのオンラインジャッジシステムで、通称AOJと呼ばれています。
このサイトでは大量のプログラミング問題が用意されており、初心者向けの問題から上級者向けの問題まで難易度順に収録されているのが特徴です。ひたすら問題を解いていく形式となっているので、まとまった時間があまり取れない人でも、気軽に挑戦できます。
ある程度プログラミングに慣れて、問題数を解いていきたい方にはおすすめできます。
競技プログラミング体験談
ここからは上で説明した競技プログラミングのうちのAtCoderについて、私の経験を踏まえて紹介していきたいと思います。
AtCoderのコンテストの種類はいろいろありますが、AtCoder Beginnger Contest(ABC)と呼ばれるものが初心者向けとなっており、これをメインに参加しています。
開催される時間帯は土日の21:00〜2時間程度が多く、社会人でも比較的参加しやすいものになっています。また、使用できる言語は基本的に何でもよく、C言語、Java、Pythonなど自分の好きな言語で参加できます。ちなみに私はPython で参加しています。
コンテスト中の進め方としては以下の流れで解いていきます。
競技プログラミングではコードの中身についてはチェックされないので、あらかじめPCに実行環境を用意しておき、提出前に動作確認をしておくとよいです。
- コンテスト内で出された問題から解きたい問題を選択
- 問題を読んで内容を理解し、実際にコードを書く
- 書いたコードを提出
- 提出したコードに対して、問題ごとに用意されたテストケースがすべて通れば正解
- 正解したら他の問題、不正解の場合は問題を解き直す等して、1〜4を繰り返す
上記を時間が許す限り行っていき、制限時間を過ぎるとそのコンテストは終了となります。コンテスト終了後に問題の解説が行われるので、私の場合は問題が解けた解けなかったにかかわらず一通り復習を行うようにしています。
また、10回ほど参加した私のレートを参考程度ですが紹介します。
高いランクではないのですが、一番下のランク(レート0~399)は超えたので、ひとまずAtCoderの初心者は卒業できたかなといったところです。
ただ、時間いっぱい考えても解き方が分からない問題があったりするので、今後もコンテストの参加を続けていて、もっとプログラミングスキルを磨いていく予定です。
競技プログラミングで身についたこと
AtCoderに実際に参加してみて、私が身についたと感じていることは以下の2点です。
- 問題解決能力が上がる
- コーディング力が上がる
1つ目は競技プログラミングでは「問題を理解する」というインプットと、「問題を解く」というアウトプットの両方が求められるためです。
コンテストに参加してみると問題は理解できるけど、解き方がうまく表現できず、コードが書けないということがよくあります。競技プログラミングでは問題文や問題の性質そのものに解くためのポイントが隠されていることが多いため、問題を正確に把握する必要があります。
自分でポイントに気づけることがベストですが、AtCoderではその点が充実していることもあり、解説の中でそれに気づくことが出来たり、自分では思いつかなかったような考え方を知ることが出来たりするのは大きいです。
2つ目は制限時間内にコードを書くという点から、なるべく短いコードで書くように心掛けたり、基本的な構文を正しく使えるようになったりする必要があります。
コードを書いているときに書籍やWebで調べながら書いている状態だと、なかなかコードを書く速度が上がらず、ミスをしやすくなる要因にもなります。競技プログラミングを習慣的に行っていると、コードを正確に書く力が定着していくため、普段の業務においても活かすことができる部分は多いと感じています。
まとめ
今回紹介いたしました競技プログラミングについてまとめると、以下のとおりです。
- プログラミングを用いて解く競技で、プログラミングの初心者でも参加できる。
- 競技プログラミングをやると、問題を理解する能力やコーディング力が身につく。
競技プログラミングはここで取り上げたもの以外にもたくさんあります。プログラミングは数をこなしていくことで上達していきますので、自分にあったものがあれば、ぜひ積極的に挑戦してみてください。
SSブログには、今回紹介した競技プログラミング以外にも、セカンドセレクションで行っている取り組みや技術テーマ等を紹介しています。
人気記事:プログラミング未経験の新人が顔認証システムを開発してみた!
もしよろしければ他の記事もご覧ください。