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演算(フラグ部分)不慣れ
・最後の出力部分が不慣れ
精進します