# 競技プロ入門
## チートシートで大気圏突入編
---
## 誰
- NAL研M2 Takumi Sato
- @padawan-e15
- SF好き
- 競技プログラミングごりごりやる人ではない
---
## なぜこのスライドが作成されたか
<font size = "100">***コロナ × 新入生 = ??***</font>
自分も強くないのですが、競技プログラミングをやる仲間が増えたらいいなという布教活動
---
## 競技プログラミングとは
<del>プログラミングの力とスコアで殴り合う爽快アクションゲーム</del>
出題者が考えた問題を解くプログラムを制限時間以内に作成し提出するコンテスト
* Google Code Jam
* Leet Code
* Atcoder<-今回紹介する
などなど
---
## なぜ競技プログラミング?
- 初学者の抱える不満を解決できる
- 爽快!楽しい!
---
## 初学者の抱える不満が解決される
- 強い人 :muscle: 「文法はさっとやって自分の作りたいものを作るといいよ」 <- :thinking_face:
- 作りたいものなんてよくわからない :face_vomiting:
- 丁度いい練習問題を知らない :face_with_one_eyebrow_raised:
- いきなり難しい問題にチャレンジする->挫折 :face_with_head_bandage:
- 解決した経験が少ないから自信がつかない :face_palm:
---
## ***丁度いい難易度で、丁度いいペースで開催される。ちょうどいい***
---
## ***時間制限があって緊張感があるゲーム感覚***
---
## 初学者にすすめる入門方法
0. 好きなエディタを用意(デバッガがあるとなおよし<-Pycharm,Atom,VScode,などなんでもいい)
1. [Atcoder](https://atcoder.jp)に登録
2. [解説記事](https://qiita.com/KoyanagiHitoshi/items/c5e82841b8d0f750851d)を読みながら[過去問精選10問](https://atcoder.jp/contests/abs)を解いて、ビギナーズコンテスト(ABC)に参加
3. ビギナーズコンテストが終わったら、
4. 解説動画を見る
5. 他の人の回答を写経
---
## Atcoder(のビギナーズコンテスト)とは?
* 日本語で今活気がある競技プログラミングサイト
* ABCという毎週開催のコンテストがある。初心者から強者まで参加している
* A問題~E問題まであり、徐々に難しくなる <- ***解ける問題が毎回ある***
* ***動画の解説とPDFの解説があり、コンテスト後に他の人の回答が見れる***
---
![](https://i.imgur.com/l09jDo5.png)
---
### さらにお手軽にするために
---
## チートシート片手に競プロの世界に入門
* ***ABCのA,B問題まで解ければOK!***
* ***コピーボードアプリ、スニペットアプリを最大限活用する***
* Dash,[Clipy](https://clipy.softonic.jp/mac)
* 個人的なおすすめの大気圏突入方法
---
## なぜA,B問題までを目標にするか
* A,B問題を解くことで言語仕様になれることができる
* C問題は言語仕様がわかれば解ける問題が多い。
<font size="5">
```
> A 問題: スコア 100 点であることが多い、簡単な文法の確認
> B 問題: スコア 200 点であることが多い、簡単な for 文、if 文を含む処理, Fizz Buzz と同程度
> C 問題: スコア 300 点であることが多い、計算量を意識したコーディングが求められるようになります
> D 問題: スコア 400 点であることが多い、ここから先はアルゴリズムの勉強も必要になってきます
> E 問題: スコア 500 点であることが多い、本格的な難しい問題です
> F 問題: スコア 600 点であることが多い、一気に難しくなります。黄色を目指すなら解きたい問題です
```
</font>
引用[AtCoder コンテストについての tips](https://qiita.com/drken/items/8a6f139158cde8a61dce)
* C問題は挑戦目標
---
### スニペットアプリの使い方
1. Qiita.com で`"atcoder + [自分のやりたい言語] + 初心者"`検索で出てくるような[記事](https://qiita.com/_-_-_-_-_/items/34f933adc7be875e61d0)を探してくる
2. スニペットアプリにどんどん追加していく
3. チートシートを見ながら、解いていく
---
初心者はすぐにやり方を見れるようにしておきたいが、ブラウザで開いておくだけでは、まとまりがない。
***すぐチラ見!すぐに貼り付け!何回も解いてると自然と手が覚える、何をやっているか理解できる!***
じきに暗記してチートシート見るほうがだるくなってきます。
---
## やる気というか楽しさというか
講義でやっている
***仕様,理論の理解->実践->問題の解決***
が王道!でもやる気の持続が難しい。
競技プログラミングwithチートシートの
***実践->問題の解決->仕様,理論の理解***
では途中でコケて仕様が理解できなくても成果が残るので、やる気が持続しやすい。
---
## ***メンタルヘルス***
***解けなくても良い。落ち込まない。解けた自分を褒める***
***やってることを全部理解してなくてもいい***
***とにかく早く解ければいい***
***Done is better than perfect.***
:100: :muscle: :tada:
---
## 参考文献
* スニペットアプリ
[Dash.app](https://kapeli.com/dash)
[Clipy](https://clipy.softonic.jp/mac)
[AtCoderに登録したら解くべき精選過去問10問をPythonで解いてみた](https://qiita.com/KoyanagiHitoshi/items/c5e82841b8d0f750851d)
[Pythonで使う競技プログラミング用チートシート](https://qiita.com/_-_-_-_-_/items/34f933adc7be875e61d0#基本-1)
[AtCoder コンテストについての tips](https://qiita.com/drken/items/8a6f139158cde8a61dce)
---
<del>Discord , Twitter , Zoom , Teamsで同級生と繋がろう!
人脈を広げろと強要しているのではなく、コロナで孤立することを防ぎたいねという意味です。
</del>
---
# おわり
---
# 2020/05/02のお品書き
* Done
* スライド発表~14:08
* ToDo
* atcoderを解いてみよう!14:08~
* 精選10問のAB問題
* 入力を受け取る
0. 好きなエディタを用意(デバッガがあるとなおよし<-Pycharm,Atom,VScode,などなんでもいい)
1. [Atcoder](https://atcoder.jp)に登録
2. [解説記事](https://qiita.com/KoyanagiHitoshi/items/c5e82841b8d0f750851d)を読みながら[過去問精選10問](https://atcoder.jp/contests/abs)を解いて、ビギナーズコンテスト(ABC)に参加
3. ビギナーズコンテストが終わったら、
4. 解説動画を見る
5. 他の人の回答を写経
---
やり方
1.チートシートを開く
[Atcoder精選10問題Pythonチートシート](https://qiita.com/_-_-_-_-_/items/34f933adc7be875e61d0)
---
086A
小さい目標
入力を受け取る
`a, b = map(int, input().split())`
大きい目標
入力を計算して出力する
```
# coding: utf-8
a, b = map(int, input().rstrip().split(' '))
result = a * b
if result % 2 == 1:
print('Odd')
else:
print('Even')
```
```
>>> print("101".count("1"))
2
```
{"metaMigratedAt":"2023-06-15T07:06:58.712Z","metaMigratedFrom":"YAML","title":"Competitive programming is fun","breaks":"true","description":"View the slide with \"Slide Mode\".","slideOptions":"{\"theme\":\"white\",\"slideNumber\":\"c/t\",\"center\":false,\"transition\":\"none\",\"keyboard\":true,\"width\":\"93%\",\"height\":\"100%\"}","contributors":"[{\"id\":\"c4e4ba33-a6cb-4e86-994b-f1c45e6678b1\",\"add\":5525,\"del\":1266}]"}