Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
競技プログラミングへのお誘い~私と競プロ友達になってください / Invitation to ...
Search
thatblue
December 03, 2022
Technology
1
800
競技プログラミングへのお誘い~私と競プロ友達になってください / Invitation to Competition Programming
Rails Girls Gathering Japan 2022のLT資料です。
https://gathering.railsgirls.jp/
thatblue
December 03, 2022
Tweet
Share
More Decks by thatblue
See All by thatblue
Kaigi on Rails 2025 お土産話 / Trip Stories of Kaigi on Rails 2025
thatblue
0
35
Stimulusのすすめ/Introduction to Stimulus
thatblue
0
27
RubyKaigi 2025 お土産話 / Trip Stories of RubyKaigi 2025
thatblue
0
13
発表資料テンプレート / My slide template
thatblue
0
460
GitHub Pagesで構築したブログをスマホ対応させてみた / make mobile-compatible with lightweight css framework
thatblue
0
370
Sendai.rbコミュニティ紹介 2022 / Introduction of Sendai.rb 2022
thatblue
0
93
Rails Girls Sendaiコミュニティ紹介2022 / Introduction of Rails Girls Sendai 2022
thatblue
0
120
好みのコーヒー探し / find my favorite coffee
thatblue
0
580
Rails Girls Sendai 2ndの後日談としてのSendai.rb / Sendai.rb, As a After Story of Rails Girls Sendai 2nd
thatblue
0
82
Other Decks in Technology
See All in Technology
「リリースファースト」の実感を届けるには 〜停滞するチームに変化を起こすアプローチ〜 #RSGT2026
kintotechdev
0
930
歴史から学ぶ、Goのメモリ管理基礎
logica0419
14
2.8k
たかがボタン、されどボタン ~button要素から深ぼるボタンUIの定義について~ / BuriKaigi 2026
yamanoku
1
270
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
Kaggleコンペティション「MABe Challenge - Social Action Recognition in Mice」振り返り
yu4u
1
230
「違う現場で格闘する二人」——社内コミュニティがつないだトヨタ流アジャイルの実践とその先
shinichitakeuchi
0
350
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
320
「駆動」って言葉、なんかカッコイイ_Mitz
comucal
PRO
0
140
複雑さを受け入れるか、拒むか? - 事業成長とともに育ったモノリスを前に私が考えたこと #RSGT2026
murabayashi
1
1.9k
これまでのネットワーク運用を変えるかもしれないアプデをおさらい
hatahata021
2
120
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
9
22k
「アウトプット脳からユーザー価値脳へ」がそんなに簡単にできたら苦労しない #RSGT2026
aki_iinuma
11
5.2k
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
69
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Code Review Best Practice
trishagee
74
19k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
A Soul's Torment
seathinner
4
2.1k
Paper Plane
katiecoart
PRO
0
45k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
98
Deep Space Network (abreviated)
tonyrice
0
34
Balancing Empowerment & Direction
lara
5
840
HDC tutorial
michielstock
1
320
Transcript
#rggjp Rails Girls Gathering Japan 2022 競技プログラミングへの お誘い 私と競プロ友達になってください あのぶる
(@thatblue_plus)
#rggjp Rails Girls Gathering Japan 2022 自己紹介 • だいたい仙台出身、ほぼ仙台(Matz島の手前くらい)在住のソフトウェアエンジニア ◦
学生時代を過ごした会津若Matzは第二の故郷 ◦ スマホゲームのバックエンドを作るのがメインのお仕事(のはず) • Rails Girls関係のロール ◦ Sendai 1st, 2ndのオーガナイザー ◦ Sendai, More!の運営 ◦ Rails Girls Japan メンバー (2022/03~) New! • Sendai.rbの代表スタッフもしています
#rggjp Rails Girls Gathering Japan 2022 こんな悩みはありませんか プログラミングに慣れるために もっとたくさんコードを書きたいけど、 いい課題が見つからない…
#rggjp Rails Girls Gathering Japan 2022 それ、競技プログラミングで 解決できるかもしれません
#rggjp Rails Girls Gathering Japan 2022 競技プログラミングとは? 今回はアルゴリズム分野の技能を競うタイプについて扱います
#rggjp Rails Girls Gathering Japan 2022 プログラミングの技術で勝負する競技の一種 通称「競プロ」 プログラムを書いて答える問題が出題される 解答となるプログラムを書いて提出する
→主催者の用意したシステムで採点される 時間内に一番多く、早く解いた人の勝ち 5min 5min 10min 5min 10min 10min 5min 5min
#rggjp Rails Girls Gathering Japan 2022 例題 [AtCoder Beginner Contest
186 A - Brickより抜粋] トラックが1台あります。このトラックには合計でNキログラム以下の荷物を載せ ることができます。 このトラックに、1個Wキログラムのレンガを最大でいくつ載せることができま すか? 制約 • 1 ≤ N,W ≤ 1000 • N,W は整数である。
#rggjp Rails Girls Gathering Japan 2022 こんな感じで実行されるイメージ $ ruby brick.rb
1000 20 # NとWの入力 50 # 答えの出力
#rggjp Rails Girls Gathering Japan 2022 解答例 n, w =
gets.chomp.split.map(&:to_i) puts n / w
#rggjp Rails Girls Gathering Japan 2022 でも、難しいんじゃない?
#rggjp Rails Girls Gathering Japan 2022 モノによりますが初心者でも楽しむことが出来ます • AtCoderのAtCoder Beginner
Contest(通称: ABC) ◦ AtCoderはおそらく日本の競技プログラミングコンテストサイトを代表するサービス ◦ Beginner Contestと言いつつ上級者向けの問題も混じっているので取捨選択が必要 ▪ 問題の選び方は後ほど ◦ ほぼ毎週コンテストを開催しているので、過去問で慣れた後、実際に参加することもできる ◦ Rubyは2.7対応 • Aizu Online Judgeの問題 ◦ 福島県にある会津大学という大学が運営しているサイト ◦ 競技プログラミングの入門記事を読んでいると、学習用として頻繁にお勧めされる (多分これ、一部の問題は本当に授業の演習課題として使ってたことがあるんじゃないかな…?) ◦ Rubyは2.4対応 • yukicoderの問題 ◦ 模試・勉強会の場を提供する位置づけで運営されているサイト ◦ 自由に問題の投稿ができる ◦ 概ね週1回の頻度でコンテストが開催されている ◦ Rubyは3.1対応
#rggjp Rails Girls Gathering Japan 2022 競技プログラミング問題のいいところ • やることがはっきりしている •
問題がたくさん用意されている • 問題の難易度も色々揃っている • 解けたらサイトに提出すれば正しそうかどうかジャッジしてくれる • 自力で解けなかったら解説もある • どうしても分からなかったら他の人の正解コードを読んで勉強できる • いろんなプログラミング言語で挑戦できる • 過去問をちょっと解いてみるだけでも楽しい • 慣れてきたら実際にコンテストに参加すればそれはそれで楽しい
#rggjp Rails Girls Gathering Japan 2022 実際どんな問題があるのか (AtCoder Beginner Contestの例)
#rggjp Rails Girls Gathering Japan 2022 初級編「プログラミングの勉強頑張る!」 • A: Hello,
World+α、という感じの実装 ◦ これをスムーズに解けるようになるのが第一歩 ◦ たまに+αの部分が妙に癖のある問題があるので、難しく感じてもあまり気にせず • B: ループを含んだ実装 ◦ 問題文の指示の通りにコードを書けば解けるように出来ている ◦ ここまではアルゴリズムの知識がなくても練習次第で書けるようになる ◦ Webサービス開発の通常業務で発生する「ちょっとややこしめの実装」が概ねこのあたり (個人調べ) ◦ Rubyで解くと書き味の良さがよく活きる
#rggjp Rails Girls Gathering Japan 2022 中級編「アルゴリズムを学びたい!」 • C: 基本的なアルゴリズム知識とそれを使いこなすスキルが求められる問題
◦ 基本情報や応用情報が射程に入ってくるのであればいい勉強になると思います • D: もう少し突っ込んだアルゴリズム知識が必要になる ◦ ここまで安定して解けるようになったら一般的な(アルゴリズムを専門領域としない)ソフトウェアエン ジニアとしては十分だと思う ◦ いま私が目指しているのはこのあたり • E: 競技プログラミングで使うアルゴリズムをだいたい理解し、基本的な使い こなしが出来ている必要がある(らしい) ◦ この辺くらいで一般的なソフトウェアエンジニアとしてはアルゴリズムスキルのカンストと のこと ◦ 正直ここからは自力で解けたことがないので各種資料を読んだ理解に基づく説明になります
#rggjp Rails Girls Gathering Japan 2022 上級編「アルゴリズム王に、私はなる!!」 • F, G:
たぶん、普通の企業であれば出来上がってるサービスを使うような領域 ◦ 逆にそれを作る側の企業でのアルゴリズム開発に興味があるのなら、大変だと思いますが ここまで頑張ってみるのもあり • Ex: 世界大会とか目指すような人が解く問題なので、とりあえず気にしなく ていいです ◦ ここまで来ると正直”Beginner”とは…?と思うのですが、当初はD問題までだったところから 増えての現在なので、相応に経緯があるようです
#rggjp Rails Girls Gathering Japan 2022 実際やってみてどうなった?
#rggjp Rails Girls Gathering Japan 2022 個人の感想です Rubyのコードがさくさく 書けるようになりました! (個人比)
#rggjp Rails Girls Gathering Japan 2022 もうちょっと真面目に成長具合を説明すると…… 「A~C問題は概ね解き方が分かる」 「他の言語の経験はあるがRubyは初心者で、簡単な処理を書くのもるりま頼り」 という状態から3ヶ月ほど集中的にやってみた
• 実際、Rubyのコードはだいぶスムーズに書けるようになったと思う ◦ 単純に反復練習になっているので、競技プログラミングで頻出の範囲であれば基本的な文法 がスッと出てこなくてアワアワすることはなくなった • 「何とかコンテスト中に3問解けた…」から「4問解けた!」にたどり着ける ようになってきた ◦ 1問目~3問目の所要時間短縮+4問目の解答に必要なアルゴリズム知識の習得 ◦ 典型問題集があるので、まずはそれをコツコツ解いていくのが良さそう
#rggjp Rails Girls Gathering Japan 2022 最近の悩み 一人で黙々とやってるの ちょっと寂しい……
#rggjp Rails Girls Gathering Japan 2022 最近の悩み 競プロ友達が欲しい!
#rggjp Rails Girls Gathering Japan 2022 楽しいけど、難しいと思うことがないわけでもない • 問題文が数学の問題みたいに見えて、慣れるまでちょっと難しいと思うかも しれない
◦ 実際、C問題以降は整数の性質・集合・組み合わせあたりの数学知識は必要になってくる • ある程度反復練習が必要 ◦ なんの予行練習もなくいきなりコンテストに出ると実際大変 ◦ C問題以上を解こうと思ったらアルゴリズムやデータ構造の勉強が必要になってくる ◦ 最初にイメージした通りの結果が出るまでにある程度時間が掛かるので、割り切りポイント が分からないと心が折れやすくはある • 初心者から世界大会レベルの人まで一緒くたになってやっているので、上を 見るとキリがない ◦ さっきの8問を30分で解くような人たちと比べてしまうと大体の人は病みます
#rggjp Rails Girls Gathering Japan 2022 もちろんプログラマーの中でも 向き不向きのある分野で、 気楽に気長にやっていくのがコツ それはまさに沼のような深みですので
#rggjp Rails Girls Gathering Japan 2022 なので、一緒にやりませんか? Rails Girls 競プロ部とか
どうでしょう?
#rggjp Rails Girls Gathering Japan 2022 宣伝: 競プロの問題を体験できるイベント、来週開催! https://sendairb.connpass.com/event/267039/
#rggjp Rails Girls Gathering Japan 2022 私と競プロ友達になってください!