AtCoder茶色解く1

今回解くのはこちら
D - String Formation

特定のフラグがきたら特定の操作を行う
特定の操作は以下
1.手元のキューの順番を反転
2.手元のキューに要素を追加

ここで、1については実質やらなくてよい
なぜなら、1の操作で前後が入れ替わっても2回で元に戻るし、
1回入れ替えたあとに2の操作を行う場合はキューに入れ込む動作が前後逆になるだけだから

なので、方針は以下
・全体をデキューで実装、前と後ろどちらからでも入れられるようにする
・1が来たらフラグを立てる
・2が来たらそのあとの向きに応じてキューに入れる、フラグが立っていれば逆にする

from collections import deque
d = deque()
d.append("a")  # 右から入れる
d.appendleft("b") # 左から入れる

作ったサンプルが以下

from collections import deque
d = deque(input())
n = int(input())
p=[]
flg = 0
for i in range(n):
  p = list(input().split())
  #print(p)
  if p[0] == "1":
    flg ^= 1 # flg == 1 の場合は左右反転
    #print(flg)
  else:    
    if p[1] == "1": # 1の場合は先頭
      if flg == 1: # 1の場合は反転
        d.append(p[2])
      else:
        d.appendleft(p[2]) # 左から入れる
    else:
      if flg == 1:
        d.appendleft(p[2]) # 左から入れる
      else:
        d.append(p[2])
  
if flg == 1:
  d.reverse()
a =""
for i in d:
  a += i
print(a)

無事通りました、やったね

改善ポイントは・・・
・dequeの使い方が不慣れ
・bit演算(フラグ部分)不慣れ
・最後の出力部分が不慣れ

精進します