ABC394振り返り


前回の振り返り

https://qiita.com/comet725/items/b2c1109e811e48f82f90

今日はABC開催日だったので参加結果を振り返る

https://atcoder.jp/contests/abc394

今週はのA,B,C,Dの4完(2ペナ)


# A

内包表記のフィルター

## ソースコード

```python:main.py
print("".join(s for s in input() if s=="2"))
```

# B

文字列の長さをkeyに設定してsortedしたものをjoin

## ソースコード

```python:main.py
n=int(input())
s = [input() for _ in range(n)]
print("".join(sorted(s,key=lambda x:len(x))))
```

# C

適当な置換でTLEしてしまったので

WW...WWAを ACC...CCの塊をまとめて処理するようにした

## ソースコード

```python:main.py
from bisect import bisect_left, bisect_right, insort_left, insort_right
from collections import defaultdict, Counter, deque
from functools import reduce, lru_cache
from itertools import product, accumulate, groupby, combinations
import sys
import os
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())
IS_LOCAL = int(os.getenv("ATCODER", "0"))==0
err = (lambda *args, **kwargs: print(*args, **kwargs, file=sys.stderr)) if IS_LOCAL else (lambda *args, **kwargs: None)

def main():
    S = rS()
    s = S
    ns = ""
    w = False
    x = 0
    for c in groupby(s):
        # err(c, w, x)
        if c[0] == "W":
            w = True
            x = len(list(c[1]))
        elif w and c[0] == "A":
            next(c[1])
            ns += "A" + "C" * x + "".join(c[1])
            w = False
            x = 0
        elif w:
            ns += "W" * x + "".join(c[1])
            w = False
            x = 0
        else:
            ns += "".join(c[1])
    if w:
        ns += "W" * x + "".join(c[1])
    print(ns)

if __name__ == '__main__':
    main()

```

# D

これも適当な置換でTLE。

スタックを使って括弧が消せる位置にあるかどうかを判断した

## ソースコード

```python:main.py
from bisect import bisect_left, bisect_right, insort_left, insort_right
from collections import defaultdict, Counter, deque
from functools import reduce, lru_cache
from itertools import product, accumulate, groupby, combinations
import sys
import os
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())
IS_LOCAL = int(os.getenv("ATCODER", "0"))==0
err = (lambda *args, **kwargs: print(*args, **kwargs, file=sys.stderr)) if IS_LOCAL else (lambda *args, **kwargs: None)

def main():
    S = rS()
    
    t = []
    ans = False
    for s in S:
        if s in "(<[":
            t.append(s)
        else:
            if len(t) == 0:break
            if s=="]" and t[-1] == "[":
                t.pop()
            if s==">" and t[-1] == "<":
                t.pop()
            if s==")" and t[-1] == "(":
                t.pop()
    else:
        ans = len(t) == 0
    print("Yes" if ans else "No")
    
            
            
    
if __name__ == '__main__':
    main()

```


# コメント

テスト環境がトラブったのでunratedで挑んだが普通に4完した。
しかしperfが491しか出なかったので今回は早ときが必要だったパターンなようだ。