Atcoderほぼ緑コーダーのスニペット（Python）

# 記事構成
[1. Atcoder自己紹介](#1-Atcoder自己紹介)
[2. スニペット集](#2-スニペット集)
[3. 最後に](#3-最後に)

# 1. Atcoder自己紹介
- 茶色🟤コーダー
- 主な使用言語：Python，C++（C++は最近使ってません）
- 一時期休んでたけど最近再開
- 現在のグラフ↓

![abckuri.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3564785/136561dd-ef66-36ae-af8c-26e4f88aa4d3.png)

まあほぼ緑コーダーって言っても問題ないはず

# 2. スニペット集
一応競プロで使いやすいものを作ってます．
## Yes，YES，No，NO
競プロのよくある出力用に

```python:Yes出力
"Print Yes": {
	 	"prefix": "yes",
		"body": [
			"print('Yes')",
	 	],
	 	"description": "print Yes"
	}
```
```python:No出力
"Print No": {
		"prefix": "no",
	    "body": [
		   "print('No')",
		],
		"description": "print No"
    }
```
```python:YES出力
"Print YES": {
		"prefix": "Yes",
		"body": [
			"print('YES')",
		],
		"description": "print YES"
	}
```
```python:NO出力
"Print NO": {
		"prefix": "No",
	    "body": [
		   "print('NO')",
		],
		"description": "print NO"
    }
```

## 標準入力
よく使う標準入力形式を一通り
```python:単体出力（int）
"input a": {
		"prefix": "a",
	    "body": [
		   "a=int(input())",
		],
		"description": "input a"
    }
```

```python:リスト入力
"input abc": {
		"prefix": "abc",
	    "body": [
		   "a = list(map(int, input().split()))",
		],
		"description": "input a[]"
    }
```

```python:二重配列入力
"input aa": {
		"prefix": "aa",
	    "body": [
		   "a = [list(map(int, input().split())) for _ in range(n)]",
		],
		"description": "input a[][]"
    }
```

## Forループ
for
```python:ふぉーーー
"for roop": {
		"prefix": "fo",
	    "body": [
		   "for i in range(n):",
		],
		"description": "for roop"
    }
```

## その他メソッド
一部必要ないものも混じってます
```python:n以下の数字の素数の配列作成
"prime number": {
		"prefix": "prime",
	    "body": [
			"def prime_num(n):",
			"	if n < 2:",
			"		return []",
			"	sieve = [True] * (n + 1)",
			"	sieve[0], sieve[1] = False, False",			
			"	for i in range(2, int(n**0.5) + 1):",
			"		if sieve[i]:",
			"			for j in range(i * i, n + 1, i):",
			"				sieve[j] = False",
			"	return [i for i, v in enumerate(sieve) if v]",
		],
		"description": "n以下の数字の素数の配列"
    }
```

```python:リストの要素が辞書式順序で何番目かを返す関数
"dict order": {
		"prefix": "dict",
	    "body": [
			"from math import factorial",
			"def dictCheck(L):",
			"	index = 0",
			"	while len(L)> 1:",
			"		a = len([l for l in L if l<L[0]])",			
			"		index = index + a * factorial(len(L) - 1)",
			"		L = L[1:]",
			"	return index",
		],
		"description": "リストの要素が辞書式順序で何番目か"
    }
```

```python:1からnまでの和を返す関数
"sum_to_n": {
		"prefix": "sum_to_n",
	    "body": [
			"def sumn(n):",
			"	return n * (n + 1) // 2",
		],
		"description": "1からnまでの和"
    }
```

```python:配列内に整数nが存在するかを2分探索で探して返す関数
"binary_search": {
		"prefix": "binary_search",
	    "body": [
			"def binary_search(arr, N):",
			"	low = 0",
			"	high = len(arr) - 1",
			"	while low <= high:",
			"		mid = (low + high) // 2",
			"		if arr[mid] == N:",
			"			return True",
			"		elif arr[mid] < N:",
			"			low = mid + 1",
			"		else:",
			"			high = mid - 1",
			"	return False",
		],
		"description": "配列内に整数nが存在するかを2分探索で"
    }
```

```python:最大公約数を返す関数
"gcd": {
		"prefix": "gcd",
	    "body": [
			"def gcd(a, b):",
			"	while b:",
			"		a, b = b, a % b",
			"	return a",
		],
		"description": "最大公約数"
    }
```

```python:最小公倍数を返す関数
"lcm": {
		"prefix": "lcm",
	    "body": [
			"def lcm(a, b):",
			"	return abs(a * b) // gcd(a, b)",
		],
		"description": "最小公倍数"
    }
```

```python:aのb乗をmで割った余りを返す関数（これ何で作ったんだ？）
"pow_mod": {
		"prefix": "pow_mod",
	    "body": [
			"def pow_mod(a, b, m):",
			"	res = 1",
			"	a %= m",
			"	while b > 0:",
			"		if b & 1:",
			"			res = (res * a) % m",
			"		a = (a * a) % m",
			"		b >>= 1",
			"	return res",
		],
		"description": "aのb乗をmで割った余りを返す関数"
    }
```

```python:Bit全探索用n桁の00...0〜11...1をリストに格納する関数
"generate01": {
		"prefix": "generate01",
	    "body": [
			"def generate01(n):",
			"	return [format(i, f'0{n}b') for i in range(2**n)]",
		],
		"description": "n桁の01をリストで返す"
    }
```

# 3. 最後に
私のおすすめスニペットをコメントで教えて