AtCoder茶色になりました

# はじめに

こんにちは、Pittaです。

ABC335（2024/01/06）、新年一発目のABCで入茶できました！

https://twitter.com/fairy_pitta_/status/1743635417381949942

たくさんのいいねありがとうございます。


嬉しいのでポエム記事を少し書きたいと思います。

# 軽い自己紹介

- 23歳、社会人一年生です。
- 中受経験済み。
- シンガポールに住んでいます。(シンガポールの競プロ勢、ぜひ声をかけてください！)
- 大学では環境学を専攻し、鳥を追いかけていました。
- 昨年の１２月にやっと働き始めました
- 競プロに興味を持ったのは、QuizKnock鶴崎さんが楽しそうにAntsを解説する動画を見たことがきっかけです。

https://youtu.be/Mjp65hVjmEI?t=593



# 入茶までの軌跡

６回目のコンテストで入茶しましたが、それぞれのコンテストの軽い振り返りと反省をこの記事に毎週書いています。

https://qiita.com/Pitta/items/2527131a8d5f8fd231d3

完全に自分が見返す用ですが、失敗したときの悔しさや成功したときの嬉しさが思い出せてモチベーション管理に良かったです。


# 入茶まで何をしたか

僕としてはやはり精進量が一番効いたと思っています。

![精進グラフ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611731/01d5f38f-5f3e-10c3-6d7d-585c6c45ad84.png)

![精進量.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611731/43122cdf-ad63-33a0-7707-45d11690ae2b.png)


最近まで茶diffが全然解けなかったので、問題量をこなすべく[Boot Camp for Beginners](https://kenkoooo.com/atcoder/#/training)のEasyとMediumをやりました。灰埋めや茶埋めよりもゴールが見えやすいので自分には合っていたと思います。この時期は現在の会社に入社する直前で時間があったことも大きいです。
Boot Camp (Medium)をやってから明らかに茶diffの正答率が上がりました。レートが線形に上がり始めたのもBoot Campをやり始めてからなので、個人的にはかなり効果があったと感じています。

![bootcampphoto.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611731/1cf72bfa-9084-06f4-b4c3-d2127eedb4c9.png)


僕が入茶できたのは、**早解き回で早解き出来たから**です。自分が解けるレベルの問題をできるだけ早く解くことを徹底しました。その分自分が解けないレベルの問題の見極めも早くなり、ABCは大体開始15~40分後に撤退していました。

（個人的な話ですが、恋人は僕が土曜の夜をつぶして競プロをしていることをとても嫌がっており、あまりABCに時間をかけすぎると関係の悪化に繋がりそうなのも早解きのモチベーションになっていました。）

# 社会人としての精進法

Boot Campが一通り終わって今後の精進方法を考えていた頃、この記事に出会いました。

https://qiita.com/Hiro_Gt/items/c168f79bd711f0921f49

自分よりはるかに少ない精進量（多分）で入水していて、すげぇ…となりました。この記事に出会った頃は早解きでのパフォの限界を感じていたこともあり（じりじりと順位が下がっていくのを見ているのも切なかったので）、復習重視の精進法に切り替えることにしました。

具体的には、出来れば1日1コンテスト、緑diffまでの問題を解き、解けなかった問題は解説を読んで復習。そのあとは記事を書いてまとめる。

仕事に行く前に最初のチャレンジ、ACできた問題はそのまま解説を見て齟齬がないか確認し、記事を書く。解けなかった問題は解説を見て仕事の行き帰りの時間にしっかりと理解し、帰って記事を書き終える。

こういった感じの生活をここ1週間ほどはしていました。

通勤中は時間があるので、鉄則本も購入して読み始めました。とても勉強になっています。

https://www.amazon.co.jp/%E7%AB%B6%E6%8A%80%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E9%89%84%E5%89%87-%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E5%8A%9B%E3%81%A8%E6%80%9D%E8%80%83%E5%8A%9B%E3%82%92%E9%AB%98%E3%82%81%E3%82%8B77%E3%81%AE%E6%8A%80%E8%A1%93-Compass-Books%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E7%B1%B3%E7%94%B0/dp/483997750X

# これから

2024年が本格始動するにつれてどんどん忙しくなり、精進量が減る予定です。細々と続けて、年度末までに出来れば入緑したいです。今のところ水diffの問題が解けるビジョンがまったく見えないので、その先はその時に考えようと思います。最終的な目標は入青です。

# 最後に

最後に僕のコーディング速度が爆上がりしたVSCodeでのユーザースニペット登録を未だの方はお勧めしておきたいと思います。毎回必要だけど書くのは面倒くさい入力と使いたいけどライブラリ名が思い出せない関数を主に登録しています。これからも拡張していく予定です。

これを書いておくと、```list(map(int, input().split()))```と書かないといけないけど面倒くさい！というときに```LI```と入力するだけで出てきてくれますし、```Counter```使いたいけどなんていうライブラリだっけ？？？というときにも```getcounter```で出てきてくれます。

<details><summary>スニペット</summary>

```json
{
	"standard_input":{
		"prefix": "MAP",
		"body": [
			"map(int, input().split())"
		],
		"description": "get multiple integers"
	},
	"standard_input_2": {
		"prefix": "I",
		"body": [
			"int(input())"
		],
		"description": "get a single integer"
	},
	"standard_input_3": {
		"prefix": "LI",
		"body": [
			"list(map(int, input().split()))"
		],
		"description": "get a list of integers"
	},
	"collection deque": {
		"prefix": "getdeque",
		"body": [
			"from collections import deque",
		],
		"description": "import deque"
	},
	"collection defaultdict": {
		"prefix": "getdict",
		"body": [
			"from collections import defaultdict",
		],
		"description": "import defaultdict"
	}, 
	"collection Counter": {
		"prefix": "getcounter",
		"body": [
			"from collections import Counter",
		],
		"description": "import Counter"
	},
	"operator itemgetter": {
		"prefix": "getitem",
		"body": [
			"from operator import itemgetter",
			"#key=itemgetter(0, 1)"
		],
		"description": "import itemgetter"
	},
	"bisect": {
		"prefix": "getbisect",
		"body": [
			"from bisect import bisect_right, bisect_left ",
		],
		"description": "import bisect"
	},
	"combination": {
		"prefix": "getcomb",
		"body": [
			"from itertools import combinations",
		],
		"description": "import combinations"
	},
	"permutations": {
		"prefix": "getperm",
		"body": [
			"from itertools import permutations",
		],
		"description": "import permutations"
	},
	"bisect": {
		"prefix": "getbisect",
		"body": [
			"from bisect import bisect_right, bisect_left ",
		],
		"description": "import bisect"
	},
}
```

</details>


スニペットの登録方法はこちらの記事を参考にしました。

https://zenn.dev/miz_dev/articles/157a7aaad0bdcf