PG BATTLE 2022に参加しました!

Takuma Kitamura
KARAKURI Techblog
Published in
10 min readOct 29, 2022

こんにちは!カラクリ株式会社・R&D チームの北村です。

このたび、競技プログラミングの企業・学校対抗コンテストである PG BATTLE 2022 に R&D チームのメンバーで参加しましたので、その様子をお伝えしたいと思います!!!

参加に至るまで

カラクリ株式会社には、国際情報オリンピック銀メダリストの吉田さんをはじめ、競技プログラミングに強い・関心のあるメンバーが数多く在籍しています!

社内掲示板では「カラクリ・競プロギルド」として、AtCoder の進捗管理や情報共有など行っています。

今回 R&D チームの大日方さんの提案で、企業対抗のチーム戦である PG BATTLE 2022 に参加することにしました!

先述の吉田さんは都合により参加できなかったものの、大日方さんとわたくし北村、そしてインターンの小倉さんの 3 人チームで参加することになりました。

チーム名は “Problem Solution Fit”. 今期の弊チームのスローガンであるとともに、コンテストにおける問題解決を目指す意味も込めた命名となっています!

当日の様子

PG BATTLE では各々が担当する難易度の問題を解くことになります。なのでオンラインでも参加可能ですが、気分を高めるため当日は 3 人ともオフィスに集まって試験に挑むことになりました!

(↑ カラクリのオフィスの様子です。この記事は3年前のものですが、現在はさらに 1 フロア拡張され、より快適になっています!!)

開始 30 分前、休日のがらんとしたオフィスに全員が集合し、それから提出方法の確認や試験内容の予想をしました。

今回我々チームの目標は 20, 30 位の飛び賞!それぞれが 2~3 問を解ければ狙えそうで、実力的にも緊張感を持って臨めるラインです。

お互いに気合を入れあって、各フロアの会議室に分かれていきました。

試験中の様子は以下の個別の感想をご覧ください!

試験終了後には 3 人がまた集まって、お互いの出来を確認しつつ、解けた問題・解けなかった問題の振り返りをして盛り上がりました!

このように問題について仲間と語り合えるのも、チーム戦の魅力ですね!!

各部門担当の感想

それぞれの難易度を担当したメンバーによる、コンテスト内容の報告と感想です!

ましゅまろ:担当 小倉

初めまして!難易度ましゅまろを担当したR&Dチームでインターンをしている小倉です。

冒頭でも軽く紹介されたつよつよ競プラーである吉田さんが不都合により参加できないとのことで今回代わりに参戦することになりました!
(私より強い方は弊社にたくさんいるのですが, 一番暇そうってことでお声がかかったのかな?笑)

AtCoderのレートは茶色中盤で、そろそろアルゴリズムの勉強をしようと思っていたのですが、結局やらずに2年が経ち現在に至ります。

お誘いを受けた当初は吉田さんの代理として出場することは荷が重かったですが、参加するからには一所懸命でやろうと腹を括り、「最低限3問は解く」という目標を掲げました。

目標を達成するにあたって1.AtCoderの過去問を解き、2.アルゴリズムの参考書を読みました。
1では 勘を取り戻すために2週間毎日2,3問ペースでAtCoderのA~Dの問題を解き、2ではコンテスト前日にけんちょん本を200ページほど読み、網羅的にアルゴリズムを把握できるようにしました。

コンテスト当日!!

土曜日でしたが、弊社のコンテスト参加者と会社で集まる予定だったのでいざ出社。前日に勉強したけんちょん本を辞書代わりに使おうと考えていたのに、家に忘れてしまい急に不安が湧いてきました。しかし、大日方さんや北村さんが優しい言葉をかけてくださり、不安はほぼなくなりました!(出社して本当に良かったです!!)

コンテスト5分前に皆さんと「頑張りましょう!」と声を掛け合いそれぞれ別の部屋へ。

PG BATTLEではコードの再提出が効かないため、確実に3問解くことを意識しました。
1,2問目は難なく解くことができました。3問目は過去問よりも簡単に感じたので、逆に見落としがあるのではないかととても不安になりましたが、安心できるまで自作したテストケースで試しました。4問目は最後まで粘ったものの、手も足も出ず、けんちょん本で予習したアルゴリズムでは解けないと判断し、解答を終了いたしました。

終了後は皆さんと再度集まり感想戦を行い、皆さんから僕が解けなかった4問目の解説して頂いたり、コンテスト中の心情など聞けてとても楽しかったです。途中で結果も公開され、提出した3問は全て正解で無事目的も達成できました!

最後に
今回のコンテストは代理として参加させて頂いたものの、アルゴリズムの勉強をするための重い腰を上げるきっかけになりとてもためになりました。また、他の方々と一緒に緊張した空間を共有できたのも新鮮でいい機会でした!今回のコンテストをきっかけにまた競プロ力上げられるよう精進します!!

せんべい:担当 大日方

せんべいを担当しました大日方です。3完目標だったところ2完に終わり、完全にチームメイト2人にキャリーされました。2問解いた後、80分くらい頭を悩ませるだけの時間は悔しいものでした。

今回集まった3人の中で自分は真ん中のレート帯だったため、せんべいを担当することになりました。競プロは4年前に始めて1年ほどで疎遠になってしまっていたのですが、今年は久し振りに復帰しました。(気付いたらまた半年くらい離れていましたが。)ただレートは水色のまま停滞し続けており、精進が足りないようです。。。

競プロの大会ということで意気込んではいたものの、準備の時間はあまり取れませんでした。過去問を2年分だけ解いてみて3完出来ていたので、本番も3完を目標に臨みました。

コンテストが開始して1, 2問目は順調に10分くらいで解き終わりましたが、3問目がどうも解けず、、、結果そのまま2完で終了しました。他の2人が上手くいっているといいなと祈りながら頭を悩ませ続けるという苦い時間を味わいました。。。

結果とは別に、コンテスト中に実践していたことを残しておきます。PG Battleは提出が1回のみというルールだったため、次のことを実践していました。

  1. 提出画面でのコードテストで最終確認を行う → 言語選択ミスや不要なprint文の消し忘れを防ぐ目的
  2. 制約上限ぎりぎりのケースを生成して実行時間を測定する → 見落としがちな計算量のオーダー違いを防ぐ目的

終わってから解説動画を見たところ、3問目はもう少し練習して勘を取り戻していれば解けていたかもというくらいの難易度で悔しかったです。4問目は今の自分の実力では手を出せないレベルでした。(このせんべい、鋼鉄か…?

当日は3人ともオフィスに集まって別室で解いていたのですが、これがとても良かったです。コンテスト前は緊張がほぐれ、士気も上がりました。コンテストが終わってからは3人で感想戦をしたり、北村さんに解けなかった問題の解説をしてもらったりして、競プロに熱中していた4年前を思い出しました。来年もまた出ようと思っていますので、その時までに青色に上げてリベンジしたいと思います!

かつおぶし:担当 北村

改めまして、難易度かつおぶしを担当したR&Dチーム北村です。AtCoder では黄色コーダーで 3 人の中では一番レートが高かったため、 この難易度の担当となりました。ただし黄色になったのはおよそ 2 年半前、そこからほとんど実戦を行っていなかったため、試験前はかなり不安でした。

実際、過去問を解いた感じだとかつおぶしで 2~3 問解けるかどうか。また提出ルールのこともあり、確実に 3 問を取りにいくことを心がけて試験に臨みました。

コンテスト開始後、1 問目はすぐに解法が分かり、10分弱で提出できました。2 問目も方針はすぐ思いついたものの、やや手間のかかる実装にしてしまったり、デバッグに慎重すぎたりと、少し時間を浪費。提出時点で 30 分ほど経過していました。

そこから次の問題へ移動。自分の得意分野が数学的な問題なのですが、3 問目はそれにバッチリ。すぐに方針が思いつき実装していきました。しかし、なぜかバグが取れない。。結局、細かい添字のミスがあって、それを見つけるのに大幅に時間がかかってしまいました。提出したころには残り 25 分程度に。

残り時間で 4 問目に挑みましたが、すぐには筋のいい方針を思いつけず。。。15 分を切ったところでこれ以上は厳しいと判断して、提出終了となりました。

コンテスト終了後は仲間と感想戦。他のみんなもおおむね最善を尽くせていてホッと一息。すぐに個人の結果が見れて、提出した 3 問とも解けていることを確認しました。よかった。

しかし、 SNS で感想を見ていた中で、実は 4 問目が例年に比べて易しめだったことが判明!改めて考えると、たしかに自分にも解けなくはないレベルとわかりました。悔しい。。。

事前に目標を 3 問解くと決めていて、実際に達成はできたのですが、目標に固執しすぎて時間をかけすぎた、という反省があります。あとは、実装スピード・慎重すぎる動き・デバッグでのタイムロス。全てひっくるめて日々の精進不足を痛感しました。

ただ、逆に言えばまだまだ伸びしろがあるということ!今回の大会で再び競プロ熱が高まったので、これからもプログラミングスキルの向上に努めたいと思いました。目指せ橙!!目指せ赤!!!

PG BATTLE は会社の仲間で戦えるということで、モチベーションの面で大きな刺激になるイベントだなと思いました。来年以降も是非参加したいですね!今度は満点取りたい!!

結果

最終結果として、カラクリ株式会社チーム “Problem Solution Fit” は 300 点満点中 180 点を獲得、企業チーム内の成績は 191チーム中 29 位となりました!

飛び賞と 1 位差、とても惜しい!!とはいえ、目標通りの順位が取れましたし、十分健闘できたかなと思います。それと同時に、社内での競プロ熱を高めてさらなるコーディング力向上を目指していきたい、そのように強く感じました!

最後に改めて、このようなコンテストの場を設けていただいた関係者のみなさま、本当にありがとうございました!

--

--