競プロerとしての自己紹介

ここでは、競技プログラマーとしての自己紹介をしていきます。

ユーザーネーム・競プロ歴

nabefutaです。

競技プログラミングは2018年の11月にpaiza*1で知り、2019年の6月にAtCoderのBeginner Contest に参加して以来、2021年の3月で1年と9ヶ月、途中休止をはさみながら、主に週末にAtCoderのBeginner Contest に参加して現在、コーダーです。

AtCoderに出会うまで

ここでは、AtCoderに出会うまでを時系列にまとめていきます。

プログラミングとの出会い

プログラミングとの出会いは、私が小学4年生だったときの夏休みにある学校のオープンスクールです。

そのときに、ドリトル*2でMYUロボを動かしたのが初めてのプログラミングでした。

その後、中学3年の頃にiOSのアプリ:Swift Playground‪sをきっかけにSwift*3を知り、その翌年には部活でC言語を知りました。

競技プログラミングとの出会い

paizaとの出会い

部活でC言語について学んだあと、自習の手段として、paizaのコードガールこれくしょんを紹介されました。

そのときに「もっと難しい問題も解きたい!」となってHAEDモードを選んだのですが、その当時はPython3版しか実装されていませんでした。しかし、やっていくうちに、Python3でも簡単なプログラムならば書けるようになりました。

それとほぼ同時にスキルチェック*4にも挑戦するようになりました。

最初は、「標準入力って何?」といった感じで、Dランクすら獲れなかったのですが、標準入力の代わりに入力値となっている問題でDランクを獲ってからは、暇なときにはスキルチェックに取り組み、2019年の2月には、Aランクを獲ることができました。

AtCoderとの出会い

2019年の3月に関東での交流会でAtCoderを知りました。

そのときから、C言語でもAtCoderに参加できることは知っていましたが、当時は実力が余りついていなかったと思い、paizaランクSランクを獲ってから参加しようと思っていましたが、獲れる気配がなかったため、2019年の6月に初参加しました。*5

AtCoderで主に使っている言語

AtCoderに参加して以来しばらくは、主にC言語、処理の内容によって、Python3を使っていました。しかし、ある問題*6をきっかけにC++一本に切り替えました。

印象に残っているアルゴリズム・データ構造

動的計画法(DP)*7です。

私にとって、動的計画法は宿敵ともいえる関係で、最初に参加したコンテストでも、これに引っかかり、それ以来、節目節目で出くわしていて、印象に残っています。

*1:ITやWebエンジニアに特化した転職・就職・学習サイトです。 その中でも、paizaラーニングでは、C、Java、Python3など、7言語のプログラムの基礎をWeb上のエディタを使いながら学ぶことができ、また、スキルチェックで腕試しができるので、私はAtCoderを始める前に使い、基礎的な知識を習得しました。 リンク:https://paiza.jp/

*2:日本語を使って書くことができるプログラミング言語です。 ドリトルの情報ページ: https://dolittle.eplang.jp/

*3:主にiOSのアプリの開発で使われているプログラミング言語です。2014年と比較的最近登場したのに伴い、他の言語に似たところがあります。

*4:問題が出題されるので、その問題に答えるプログラムを規定時間内に提出して、プログラミングの提出までの時間と解答の正確さによってpaizaランクが与える仕組みです。

下から2番目のDランクは標準入出力、基本的な構文を知っていれば突破できますが、一番上のSランクになると、普通にプログラグを組むと実行時間制限を越えてしまうため、工夫なしには突破できません。

公式ページの解説: https://paiza.jp/guide/career#outline

*5:ちなみにpaizaランクSランクを獲ったのは、2020年の4月のことでした。

*6:その話については後日上げる予定です

*7:ある大きな問題を解くのに、いくつかの小さな問題に分け、その結果をまとめて大きな問題を解く手法です。