AtCoderを定期的にやっているKSDくんに、競技プログラミングの世界ってどんな感じなのか聞いてみました。

See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

00:03
はい、みなさんこんにちは。TRY-CATCH FM第12回始まります。お願いします。
結構前のエピソードというか配信で、GCPの資格試験受けるって言ってたじゃないですか。
言ってましたね。結果が出たんですか?
おととい受けに行ったんですよ。近くのテストセンターみたいなところにね。
どうでした?
まあ結果なんですが、受かってました。
そういうこと次はね。おめでとうございます。
いやーマジで嬉しい。
おめでとう、おめでとう。
すげーな。いいじゃん。GCPの資格とか今めっちゃホットな。
データエンジニア。データエンジニアね。
いやーでもね、なかなか俺ね、ほんとこういう資格試験苦手なのよ。
あ、そうなんだ。
受験勉強とかも全然身が入らない。
上手く出そう、身が入らないタイプで。座角が苦手なの。
なるほどね。
必要なことしか勉強できないみたいな。
GCPもさ、今常務ですぐ必要ってわけじゃないから。
あーなるほどね。
そうそうそう。
そうだね。
まあ、でも頑張って勉強しまして。
おめでとうございます。
加工門とかもあんまなくて、GCPだと。
AWSだとまあまああるんだけど。
新しいのか。
多分新しくて、加工門がAmazonでKindleで買って、
でまあ700円くらいだったんだけど、
全部英語なんですよ。
いやー。
150問くらいあって、
でまあそれをひたすらね、やっていきました。
形式はどんなのですか?
普通に文章台というか文章あって、
こういうアーキテクチャーになっていて、
これをクラウド移行したいですみたいな。
でその時のベストプラクティスはABCDのうちどれでしょうみたいな。
のが延々と続くみたいな。
全部選択式。
はいはいはい。
でたまにこの中から2個選んでくださいとか、
そういうのが出てくるくらいなもんで、
まあまあまあ。
抵抗はなんとなく対策できるというか。
センター試験と同じような感じだったね。
03:02
まあそうね。
でもまあ全部英語だったのは普通につらかったわ。
聞いただけでちょっとやる気なくした。
思えないな、それはな。
そうそうそう。
頑張りました。
あれね、思えるのがあっさりわかるんだよね。
2時間くらいで解いていって50問。
でサブミットみたいな最後ボタンポチッとしたら、
画面切り替わって合格って出るんだよね。
選択式来たから一瞬で出るんか。
そうそうそうそう。
え?でもこの合格って合格ってこと?みたいな。
いや現代的だけどいいね。
1週間ちょっとモヤモヤしながら待つとかなくて。
でもスコアは出てこない。
あ、そうなんだ。
で、ボーダーもわかんないらしい。全滅には。
この辺は変な対策というかハックされないように気を使ってるのかな?
なのかな?わかんないけど。
それでテストセンターで試験を受けてるから、
そこに不正がなかったかみたいなところは、
1週間くらい別途調査されて、
それが追っていってなれば正式合格みたいな。
で、今の俺は一応問題のスコア的には合格ですよってなってる状態かな。
あとは不正で落とされたけど。
不正で落とされるはずないと思うけど、ちゃんとやったから。
まあそんな感じですよ。
まあ合格だと思う。99%ね。
ありがとうございます。
まあよかったです。レジュメにかけるやつが増えてよかったわ。
だいぶホットだよねそれはね。
そうだね。
まあそんな感じです。
今日のメイントピックはですね、
強プロです。
競技プログラミングですね。
競技プログラミングでコスターさんやってるじゃないですか。
ちょこちょこ。
細々とね。
続けてはいますよ。
うんうんうん。
どれくらいやってる期間としては?
言うて1年以上やってるような気がする。
あ、そうなんだ。週1回とか。
そうだね、毎週くらい。
今、アットフォーダーっていう日本の競技プログラミングサイトに参加してて。
なぜかっていうと、形式がやりやすいっていうのと英語をやりたくないっていうのがあったときにいるね。
06:00
結構なんか色んなちょっと有名な、界隈でちょっと有名な人がやってたりとかもあって、
人気が出たりした競技プログラミングサービスなんだけど、
そこで毎週土曜日に一応が多いの、夜9時から2時間くらいのコンペが結構開かれてます。
それがレーティング対象というか、参加者はリアルタイム参加コンペのスコアでレーティング付けされてます。
レーティングが付けられるのはリアルタイムで参加した人だけで、
あとからそのレーティングを気にしなければその問題解くこともできるので練習もできますよっていうようなサービス。
なるほどね。それでそのときにいいレーティングスコアを取ったらクライが上がるんだね。それがレーティングって言うんだっけ?
そうだね。それがレーティングで、あなたは今1000いくつですとか2000いくつですみたいなのがあって。
なるほどね。あれ、色は色?
色っていうのが結構ワットコーナーで言われてるんですけど、一番下が灰色で一番上が金かな?みたいなのがあって。
赤とか聞いたことあるけど。
赤の上が確か銀、金くらいまであって、実質そこの人たちはほぼいないはず。実質赤がいいと思う。その辺が上すぎて曖昧なんだけど。
なるほど。
赤っていうのはもうその界隈の業界トップクラスみたいな人たちだと思うので。
有名人っていうレベルよね。
そうだね。スポーツとかゲーム、eスポーツとかで言ったらプロみたいな人たちで。
なるほど。
もうそこにいるなんてレベル違うっていう人たちで。
初心者、一番最初灰色から始まって、一応イフ分とかかけますぐらいで茶色とかになれるんだけど、そこからイフ分、フォームとかから先のデータアルゴリズムの構造についてかじり始めて、練習し始めてやってますよっていう人が緑ぐらいっていう色付けなんだよね。
よくそこの社長さんとかだと、緑あれば普通の会社だと十分だよねって話を言ってて、その次の水色と言われる色の色帯になると、もうその会社によっては大手のデザイヤーで普通にエンジニアをやるだけだと別にそこまでスキルいらなくても邪魔すかもくらいの。
そこが一つのボーダーというかね、ちゃんと勉強したら一旦そこだよっていうところがあるので、僕はそこを目指そうと思って勉強をちょっとサボり気味なので、緑だとちょっと終わってるっていう感じです。
でもあともう少しで水色にいける感じなの?
そうだね、単純な数値の連続で表すと微妙なんだけど、800から1,100っていうレートが緑です。レート400の幅があるのね。
09:12
僕は今その中の後半に入ったところ、1,050くらいのところにいるので、上がり方はもう全然単調増加になるわけではないので、色々とあるんですけど、水色への道を割と踏み込んでいっているって感じですね。
いいっすね、なるほど。実際さ、これちょっとコートで説明できるかわからないんだけど、どんな問題が出てくる?
えっとですね、そもそもコンテストって大きく3種類かな、コーナーとありまして。
そうなんだ。
ビギナー、だいたい全部今は6問でやってます。各6問点数が割り振られてそれによって難易度が違うんだけど、まずビギナーズコンテストっていうのがあります。
ビギナーと言いつつも上の方の問題は普通に難しくて、さっき言ってた水色どころかもう1個上の青の人まで受けれるっていう。
あれ黄色かな。
もう結構上まで受けれるんで、そこが完璧にできるようになったら全然卒業でいいですくらいの、普通の人としてはそういうランク帯のコンテストが一番下です。
で、その次にレギュラーコンテストというもうちょっと上の、それこそさっき言ってた赤の人は参加するかしないかぐらいのコンテストがあります。
で、グランドコンテストっていう、どんな上の人でも参加するっていうコンテストもあります。
で、主にこの3種類で、ただそのビギナーズコンテストがやっぱり幅も広いし、ユーザーも多いので一番やられてます。
で、そのビギナーズコンテストなんだけど、もう1問目は、2問目は正直、if文が使えればとかfor文が使えればみたいな感じです。
で、あと4問あるうち、その3問目が大体、まあ貪欲法というか、愚直に全部探索すれば1から10万までのうちこういう数を全部探してくださいみたいな問題があったとしたら、
貪欲に10万まで数え上げれば間に合いますよみたいな、できますよみたいな問題があります。
で、D問題ぐらいになると、4問目ぐらいになると、愚直にやるとタイムオーバーですっていうような問題が出てきます。
制限時間が設けられてるんです、言い忘れましたが。
なのでそのタイムオーバーにならないようにデータ構造とかはうまく使って短縮するよね、みたいなところが結構D問題。
知ってる人は動的計画法とか言われるようなものですからね。
なるほど、はい。
E、Fぐらい、5問目、6問目とかになると、グラフ構造とか、木とか言われるような、木構造と言われるようなね。
12:12
はいはいはいはい。
専門的な構造の話とか、最短経路問題、どの道を通ったら一番短い時間でここにたどり着けますよみたいなタスクの問題とか、
ちょっと数学的な問題を組み合わせた問題とか、いろんなものが出てきます。
で、それプラス、結構これ数学じゃんみたいな問題が割と出てきたりするので、たまにアッドコーダーは数学芸と言われたりもするんだけど、
それは本当にアルゴリズムの構造でやる場合もあるし、これ整数の性質を知ってればできたみたいな問題もあったりするので、そこは見極める目っていうのになってくるかなと思うんですね。
そこの成果ってさ、単純に答えが出ればいいっていう話なのか、それともプログラミングの計算量とかも加味されたりするの?
計算量についてはもう実行時間で見られてると思ってよくて、あとメモリが大きすぎるとアウトかな。
答えの出力の仕方なんだけど、多分競技プログラミングサイト、海外のサイトとかだと実際に出したプログラムそのものを見られるところもあったりするらしいんだけど、アッドコーダーは出力が全てです。
なるほどね。それはそれで意味がかなってるような気もする。
だから何なら入力に対する出力が全部もしネタバレされてたら、それが来たときにイフ分でこの答えを出すよっていうだけのプログラミングができたら通ります。それでOKが出ますっていうぐらい。
たまに嘘解法と言われたりする。本当の解法じゃないし、ちょっと穴があるんだけど、これでも通っていますみたいな答えがあったりして、たまにね。
それを見つけるのが楽しいみたいなこともたまにいたりしますが、そこはちゃんとテストケースがしっかり何十個も作ってあって、
嘘で穴があるようなプログラミングだとそのテストで弾かれるみたいな形式をとっているので、基本的には信頼していいと思います。
なるほどね。了解です。
この競技プログラミングやってると、結構いろんな考え方とかアルゴリズムとかそのスキル身につきそうな気がするけど、コスタ自身は何のためにやってるの?
目に見えて人と比べてどうだったっていうのがあった方がやっぱりやる気が出るなっていうのが最初だったんですよ。
その時期プログラミングがあんまり仕事でできてなくて、設計もそっちのほうであんまりできてない時期だったと思って、プログラミングをやりたい順位があると、冷凍とかが作ってやる気が出るってことでそれをやってました。
15:13
あと得られるものとして、結構僕のところの大学では少なくとも学部とかで一本くらいで授業でやったような内容が多いんですよ。さっき言ってた気候争いとか最短経路問題とか動的計画法とかね。
割とそれの復習にもなるなと思って、もうだいぶ忘れちゃったなっていうのと、理念はある程度わかるんだけど、それをパッと実装できますかって言われるとできない気がするなと思ったのが最初で、実際できてないから今ミドリにいるんですけど。
なので、そこの自分が今何が忘れちゃっててできなくなってるんだっけとか、そういうところの確認にもなるなっていうのと、その時Pythonをやり始めようとしてたので、新しい言語の練習といったら問題を解くことかなみたいなところがあったので。
あとシンプルに転職とかするときにコーディング視点とかっていう話もあるよね。
そうだね、最終的には直前にリードコードみたいな、リークされた情報だから倫理的にどうかって言われつつもみんながやってるサイトとかでやるんだろうな。
普段の練習としては、そういう競技プログラミングサイト、アットコーダーとかでやるのはとても練習になるし。
俺も今の会社入るときにもちろんコーディング視点あったから、その時はアットコーダーじゃないけど、ハッカーズランクっていう競技プログラミングの問題が出るサイトでちょっと予習して挑んだって感じかな。
そういう練習できる場所があると全然違うよね。
それこそGAFAとかそういう競技プログラミングサイトとかでアルゴリズムとかデータ構造とか勉強してコーディング試験に挑むみたいな話ってよくあるよね。
割とそれでアットコーダー有名になったしね。
あ、そうなんだ。
割と界隈で一時期有名だったお医者さんからグーグルに入った人がね、アットコーダーで短期間でガッと高い。
あの人もアットコーダーやってたか。
そうだね。あれがアットコーダーでその人が受けた時点で水色くらいじゃないかな。
おお、すごいね。なるほどね。
18:02
そういうのもあるし、アットコーダー自体も結構アットコーダージョブズみたいな名前で転職アッセンじゃないけどみたいなこともあるよね。
なんか見た気がする。はいはいはいはい。
いいんじゃないですかね。知名度も上がってきてるから、あそこでこれくらいやれてるんですねみたいなのも一つ。
確かに。
なんか、俺今日常的に強プロやってないけど、なぜできないかというと、できないというか、なぜやっていないかというと、やっぱりね、単純にプログラミング問題を解くっていうのがあんまりモチベーションが続かないんだよね。
なんか、やっぱり何かサービスを作りたいっていうのがあって、結局でも強プロって一回コード書いても提出してそれで終わりっていうコードじゃん。
まあね。
そこにモチベーションが持続しないんだよね、なぜか。
そこはあれだと思う。プラモとか、ゲームとかを作るのが好きっていう人か、単純にパズルの問題集を解くのが好きな人かとか、謎解きイベントに参加するのが好きな人とか、そういうのの分かれ方なのかな。
そっちじゃないんだよな、俺。
パズルとか謎解きイベントとかが好きな人は、どっちかというと競技プログラミングの問題を一個一個解くのが好きな人で、物作りが好きな人は、そういうサービスとかの方をやりたい人だと思う。
その一方で、ちゃんとアルゴリズムを勉強しておいた方がいいなという課題感はある、やっぱり。
効率とか違うからね。
プロダクトとか作るにしても、同じプログラミング言語を書いてるから、そういうもっと効率的な書き方とか分かった方が、リスポンスの早いAPIとかを作れるのかなっていう感じがするよね。
どこまで専門的にやるかにもよるけど、扱ってるものにもよるけど、あんまり専門的じゃないものだったら緑までやっとけば、少し高速化とか、小メモリーで見るとかはあると思うし、
もうちょっとそういう構造的なものをたくさん使うんであれば、水色くらいまでやっとくと、何か見えるものがあるんじゃないかなと思いますけどね。
ちなみに、その緑に行くまでの、行こうと思った時に、頑張ればどれくらい最短で行けるの?
21:09
初期はちょっとだけ上がり方に制限がかかってたりするんだよな、確か。レートの上がり方。その辺が分かんないけど、即例が何回あるか、10回くらいだとして、毎週そのコンテストに参加するんだとしたら、どのくらいかかるんだろうな。
たぶんね、僕めちゃめちゃやらかしたんですよ、最初何回かの時。参加の仕方がよく分かってなくて、一回サブビットして、うん?ってなって、そのまま放置してて、0点になったりとか。
あとちょっと難しい問題からといって、それだけ出して、簡単な問題出さなかったら、点数半分くらい。そういうことをやらかしまくった結果、最初4ヶ月くらいで、たぶん緑になってる。
緑の下の方って、やっぱりすごい簡単なところまでできればいけちゃうところはあるので、ちゃんと勉強、仕事に活かしていってみたいなのはもうちょっとやったほうがいいんだけど、緑に行くだけだったら、割と勉強したらすぐいける、2、3ヶ月くらい。
たぶんね、自分に勉強するかどうかですよ。トークスの前にちゃんと勉強するかどうかなんで、そこを主題だと思いますよ。
それで、たぶん2、3ヶ月くらいで緑に行って、もう1、2ヶ月くらい頑張って水色に行ったとして、それでGoogle受かるレベルってことなの?そう考えると、すげえ現実味を帯びてくるよね。
レベルか、どうだろうな。
もとのレベルにおよるから3ヶ月で水色まで行けるかわかんないけど、僕で言うとそれで困ることはあんまりないと思う。
普段それで教育プログラミングに参加する時よりも意識して、ちょっとだけ計算量の勉強とかを、それを英語で何て言うのかどうかは調べないと、高等指紋の時に困るだろうから、そこの勉強だと思うけど、
それ以上の内容、水色になった時点の人がその時点でわからない内容を入試者試験で聞かれるってことは正直あんまりないと思う。
それのアルゴリズムの専門のところに入ろうとしている人じゃない限りは聞かれんやろっていう感じがする。
なるほどなるほど、わかりました。
24:00
ありがとうございます。ちょっと全然教育プログラミングわかんないんで色々勉強になりました。
じゃあ今日はこんな感じで終わりたいと思います。
ありがとうございました。
ありがとうございました。
24:20

コメント

スクロール