SlideShare a Scribd company logo
1 of 41
Download to read offline
競技プログラミングのススメ
by @yt_siden
簡単に自己紹介
● 氏名: 矢野 貴大 (ヤノ タカヒロ)
● 所属: 鈴鹿高専 電子情報工学科 5年
コンピュータ部
● Twitter: @yt_siden
● Facebook: takayan1015
内容
● 競技プログラミングとは
● [宣伝]
● 通常のプログラム開発との違い
● 競技プログラミングで得られるもの
● 競技プログラミングだけでは得られない
もの
● まとめ
Q.)そもそも
“競技プログラミング”
って何?
―調べてみた.
しかし
明確な定義が
見つからなかった
ので…
勝手に#defineしてみた
定 義
競技プログラミングとは…
“指定の条件(プログラミング言語,CPU使用時
間,メモリ使用量)の範囲で入力から回答を算出
し,指示された通り出力するプログラム・関数を
設計すること.この行為を問題を解くと呼ぶ.
並びに,制限時間内で出来る限り多くの問題を
解くコンテスト,あるいはそれに準ずる事.”
問題例
1~N(1 N 10000)≦ ≦ の整数を以下のように増加順と減
少順で並べます.
1 2 3 4 5 6 7 8 9 ・ ・ ・ N
N ・ ・ ・ 9 8 7 6 5 4 3 2 1
上下に並んだ数でペアを作ります.この時,ペアの両
方の数が素数であるようなペアの数を数えなさい.
出典:AIZU ONLINE JUDGE - Problem 1004 :
Pair of Primes
(原文は英語)
代表的な大会など
国内
● パソコン甲子園(プログラミング部門)
● EPOCH@まつやま
国際
● ACM/ICPC
● TopCoder
● Google Code Jam
宣伝
'10 ACM-ICPC Asia Regional Contest,
in Tokyo に,鈴鹿高専のチーム
((^(^(^(^(^o^)^)^)^)^))
として,出場します.
Q.)通常のプログラム
開発と何が違うの?
A.)以下に挙げるようなことです
●問題分析
●ユーザインターフェース
●開発・運用期間
1.問題分析
通常のプログラム(システム)開発
顧客からの要求仕様であったり,自分
が実現させたい機能など,形は様々.
競技プログラミング
問題文という形で与えられる.
2.ユーザインターフェース
通常の開発
GUI,或いはGUIとCUIの複合である
ことが多い
競技プログラミング
確実にCUIである
3.開発・運用期間
通常の開発
長期間(数ヶ月~数年)
競技プログラミング
問題を解くまで
(比較すれば非常に短い)
Q.)どんな能力が
身に付くのか?
A.)以下に挙げるようなものです
● 言語習得
● 実装力
● アルゴリズムとデータ構造
● 実装のノウハウ
● テスト方法
● (英語読解力)
1.言語習得
#include <iostream>
using namespace std;
int main() {
cout << “C++, Javaと言った言語
の文法や基本的なライブラリの使用法が
習得できます.” << endl;
return 0;
}
2.実装力
要求仕様に沿ったプログラムを正確に
実装できるようになります.
例え,高度な知識を持っていたとしても,それ
を正確に実装できなければ意味がありませ
ん.
3.アルゴリズムとデータ構造
問題を解くために必要となる
• アルゴリズム
• データ構造
に関する知識を習得できます.
4.実装のノウハウ
「こういうことを実現したい時は,
そうすれば良いのだな.」
と言った具合でノウハウを蓄積でき
ます.
5.テスト方法
作成したプログラムが本当に仕様の通り
に動作するのかを適切なテストを行うこ
とによって判断できるようになります.
重要なことですが,学校の講義では教え
てもらえないことが多いようです.
具体例
境界値分析
6.(英語読解力)
日本語で書かれた問題の数は,英語で書かれ
た問題に比べたらはるかに少ないです.
従って,自然と英語の問題にも触れることにな
ります.それが,自然と英語を読む練習になり
ます.
競技プログラミングを
推してる訳ですが…
競技プログラミング
”だけ”
やっていても習得できない
能力もあります.
1.GUIの設計
競技プログラミングで解く問題の入出
力は,標準入出力や,テキストファイル
の入出力です.
従って,GUIの設計は別に習得すること
になります.
2.自分で問題を考える
競技プログラミングでは問題が理論的に定
義されていて,解法は必ず存在します.
しかし,顧客からの要求は抽象的・概念的な
ので,それを元に自分で問題を定義する必要
が出てきます.
Q.)じゃあ
どうしたら良いの?
A.)習得した能力を
実践してみる.
─つまり,
何か作ってみれば良い
のです.
まとめ
結局何が言いたかったのか
● 一つ一つの問題を解くことにかかる
時間は通常の開発に比べて短いの
で,たくさんの問題を解くことが(プロ
グラム開発が)できる.
● 問題を解くことで,開発に必要なノウ
ハウを蓄積することができる.
だからみんなも
Let's 競技プログラミング!
勝手に質問タイム
挙手でお願いします
質問その1
オンラインゲームを
現在何か一つでもやっている方
挙手をお願いします.
ノ
質問その2
ラグナロクオンライン
をプレイされている方
挙手をお願いします.
ノ
質問その3
トキメキファンタジー ラテール
をプレイされている方
挙手をお願いします.
ノ
質問その4
現在,TopCoderに参加してる方
(部門は問いません)
挙手をお願いします.
ノ
アンケートにご参加いただき
ありがとうございました.
そして,
ご清聴ありがとうございました!!

More Related Content

Viewers also liked

RUPC2014_Day3_F
RUPC2014_Day3_FRUPC2014_Day3_F
RUPC2014_Day3_F
Yuma Inoue
 

Viewers also liked (20)

RUPC2014_Day3_F
RUPC2014_Day3_FRUPC2014_Day3_F
RUPC2014_Day3_F
 
会津合宿2015Day3:B問題
会津合宿2015Day3:B問題会津合宿2015Day3:B問題
会津合宿2015Day3:B問題
 
実用Brainf*ckプログラミング入門編
実用Brainf*ckプログラミング入門編実用Brainf*ckプログラミング入門編
実用Brainf*ckプログラミング入門編
 
ACPC2016Day3:F問題
ACPC2016Day3:F問題ACPC2016Day3:F問題
ACPC2016Day3:F問題
 
会津合宿2015Day3:F問題
会津合宿2015Day3:F問題会津合宿2015Day3:F問題
会津合宿2015Day3:F問題
 
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
 
立命合宿2016Day3:H問題
立命合宿2016Day3:H問題立命合宿2016Day3:H問題
立命合宿2016Day3:H問題
 
ACPC2016Day3:D問題
ACPC2016Day3:D問題ACPC2016Day3:D問題
ACPC2016Day3:D問題
 
LP Duality
LP DualityLP Duality
LP Duality
 
ACPC2016Day3:E問題
ACPC2016Day3:E問題ACPC2016Day3:E問題
ACPC2016Day3:E問題
 
ACPC2016Day3:C問題
ACPC2016Day3:C問題ACPC2016Day3:C問題
ACPC2016Day3:C問題
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
 
競技プログラミングの楽しみ
競技プログラミングの楽しみ競技プログラミングの楽しみ
競技プログラミングの楽しみ
 
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
 
クライアントの要望にこたえるWebサービス開発 ~「らせん型ワークフロー」のススメ~
クライアントの要望にこたえるWebサービス開発 ~「らせん型ワークフロー」のススメ~クライアントの要望にこたえるWebサービス開発 ~「らせん型ワークフロー」のススメ~
クライアントの要望にこたえるWebサービス開発 ~「らせん型ワークフロー」のススメ~
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
 
Introduction to Chainer: A Flexible Framework for Deep Learning
Introduction to Chainer: A Flexible Framework for Deep LearningIntroduction to Chainer: A Flexible Framework for Deep Learning
Introduction to Chainer: A Flexible Framework for Deep Learning
 
Topological sort
Topological sortTopological sort
Topological sort
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~
 

Similar to 競技プログラミングのススメ

論理思考とプログラミング第8回
論理思考とプログラミング第8回論理思考とプログラミング第8回
論理思考とプログラミング第8回
Noritada Shimizu
 
Xp Terakoya No04
Xp Terakoya No04Xp Terakoya No04
Xp Terakoya No04
takepu
 
プロジェクトリーダに必要な3つのこと
プロジェクトリーダに必要な3つのことプロジェクトリーダに必要な3つのこと
プロジェクトリーダに必要な3つのこと
Yuji Okazawa
 

Similar to 競技プログラミングのススメ (20)

とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
ChatGPTプロンプトエンジニアリング試験の話 (230619 ChatGPT触りまくってるBizのためのMeetup#1)
ChatGPTプロンプトエンジニアリング試験の話 (230619 ChatGPT触りまくってるBizのためのMeetup#1)ChatGPTプロンプトエンジニアリング試験の話 (230619 ChatGPT触りまくってるBizのためのMeetup#1)
ChatGPTプロンプトエンジニアリング試験の話 (230619 ChatGPT触りまくってるBizのためのMeetup#1)
 
論理思考とプログラミング第8回
論理思考とプログラミング第8回論理思考とプログラミング第8回
論理思考とプログラミング第8回
 
競技プログラミングを始めよう!
競技プログラミングを始めよう!競技プログラミングを始めよう!
競技プログラミングを始めよう!
 
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
 
プログラミングで少し世界を広げよう(MPS)
プログラミングで少し世界を広げよう(MPS)プログラミングで少し世界を広げよう(MPS)
プログラミングで少し世界を広げよう(MPS)
 
プログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみようプログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみよう
 
プログラミングとは
プログラミングとはプログラミングとは
プログラミングとは
 
グループ学習で学ぶプログラミング 〜さあ、いっしょに考えよう!〜
グループ学習で学ぶプログラミング 〜さあ、いっしょに考えよう!〜グループ学習で学ぶプログラミング 〜さあ、いっしょに考えよう!〜
グループ学習で学ぶプログラミング 〜さあ、いっしょに考えよう!〜
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介
 
Xp Terakoya No04
Xp Terakoya No04Xp Terakoya No04
Xp Terakoya No04
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
きれいな設計
きれいな設計きれいな設計
きれいな設計
 
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
 
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
 
wakamonog meeting 12 パネルディスカッション企画 ~ネットワークエンジニアの歩き方2.0~
wakamonog meeting 12 パネルディスカッション企画 ~ネットワークエンジニアの歩き方2.0~wakamonog meeting 12 パネルディスカッション企画 ~ネットワークエンジニアの歩き方2.0~
wakamonog meeting 12 パネルディスカッション企画 ~ネットワークエンジニアの歩き方2.0~
 
プロジェクトリーダに必要な3つのこと
プロジェクトリーダに必要な3つのことプロジェクトリーダに必要な3つのこと
プロジェクトリーダに必要な3つのこと
 
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
 
Team Development for iOS / Android
Team Development for iOS / Android Team Development for iOS / Android
Team Development for iOS / Android
 
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
 

Recently uploaded

Recently uploaded (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

競技プログラミングのススメ