【色変記事】AtCoder入緑しました


この前のABC380で入緑しました🎉

![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F398956%2F4f5ed5d6-29ee-7819-0cda-5e2536c40cbf.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=83904237ad93d71b5ef5f6e48dcde6e4)

という訳でお約束(?)の色変記事

# 自己紹介

- 高等専門学校専攻科卒(情報工学科)
- Pythonをよく使う
- 動的計画法とセグ木が好き(できるとは言っていない)
- 座標系とグラフが苦手

# やっていること

- ADTに参加する
- ゴルフ
- (Streakを繋げる)※切れました

## ADTに参加する

週3回開催されるAtCoder Daily Trainingにできるだけ参加しています

https://atcoder.jp/contests/adt_top

参加している階級(?)はEASY
その代わりスマートフォン上でコーディングという縛りプレイ

タッチパネルだとコードを打ちづらいので最低限の
タイピングで済ませるようになるかなという謎特訓

## ゴルフ

精進とかで過去問を解く場合
A,B問題はすぐ終わって面白くないので
できるだけ提出コードのサイズを少なくするコードゴルフをしています

可読性が犠牲になるがパズルみたいで楽しい

提出したあとは他の人の提出結果をみて
どうすればよいのかという考察とかしています。

## (Streakを繋げる)※切れました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/398956/1470f49a-3039-541c-6b7a-073b2162a379.png)

ここ半年はStreakを繋げることをモチベーションに
毎日精進(とはいえA,B問題をゴルフする程度)をしていたが
サイトの情報がうまく反映されていなくて切れてしまったと勘違い

その瞬間にやる気がごっそり減り
本当に切れてしまった😢

逆に切れたことはこの呪縛から解放されたと思い、
これからはStreakを気にせず取り組んでいきたい

# 今後の予定

- E問題を解く
- 鉄則本の問題やる

## E問題を解く

緑になった次の目標は水色ということで
E問題を解けるように地力をつけていきたい。

もうすぐアドベントカレンダーが始まるので
ただ解くだけではなく記事にまとめる予定

https://qiita.com/advent-calendar/2024/any-competitive-programming

## 鉄則本の問題やる

この前の記事で鉄則本を買ったという話だが、
このまえUnionFindの勉強で開いたくらいで
ほぼ積ん読状態😅

AtCoderで全問実行できるのでできるだけACしときたい

# よく使う記述

ただただ文章ならべるだけもあれなので
自分がよく使う記述を紹介

- 入力関数
- デバッグ出力
- defaultdict
- Counter

## 入力関数

この前の記事から新たに関数が増えました

- rI: 整数単体
- rLI: 整数のリスト
- rI1: 整数に1引いた数(New!)
- rLI1: 整数のリストの各要素に1引いた数(New!)
- rS: 文字列単体
- rSI: 文字列のリスト

```python
import sys
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rI1(): return (int(sys.stdin.readline().rstrip())-1)
def rLI1(): return list(map(lambda a:int(a)-1,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
```

## デバッグ出力
デバッグ用の出力を標準エラー出力に出す関数

```python
def err(*args): print(*args, file=sys.stderr)
```

## defaultdict

初期値が設定されている連想配列

初期値が必要な要素を複数管理するときに便利

参考

https://atcoder.jp/contests/abc378/tasks/abc378_c

```python
import sys
from collections import defaultdict

def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rI1(): return (int(sys.stdin.readline().rstrip())-1)
def rLI1(): return list(map(lambda a:int(a)-1,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
def err(*args): print(*args, file=sys.stderr)
d = defaultdict(lambda: -1)

def main():
    N = rI()
    A = rLI()
    
    B = [-1] * N
    for i,a in enumerate(A, start=1):
        B[i-1]=d[a]
        d[a]=i
    
    print(*B)
if __name__ == '__main__':
    main()
```

## Counter

与えたリストの要素の個数を数えて辞書に出力してくれる

カウントしたものの個数を更に数えて
2個あるものは何種類かとかたまーにやる

https://atcoder.jp/contests/abc349/tasks/abc349_b

```python
from collections import Counter
import sys
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
def err(*args): print(*args, file=sys.stderr)

def main():
    S = rS()
    s_cnt = Counter(S)
    s_cnt_cnt = Counter(s_cnt.values())
    
    for v in s_cnt_cnt.values():
        if v != 2:
            print("No")
            break
    else:
        print("Yes")
if __name__ == '__main__':
    main()

```

# まとめ

入緑したので色変記事みたいのものをかいてみた

なにかの参考になれば嬉しい