AtCoder Beginner Contest 158 D - String Formation【Python】

https://atcoder.jp/contests/abc158/tasks/abc158_d

AtCoder ProblemsのRecommendationでDifficulty: 610、Solve Probability: 46%でした。
クエリごとに単純な文字連結をするとTLEになってしまったため追加する文字列をリストで持っておき最後に連結しました。
解説にあるようにdequeを使っても良かったです。

S = input()
Q = int(input())
# 文字列の順序が反転してないかどうか
flag = True
# 先頭に追加する文字のリスト
first = []
# 末尾に追加する文字のリスト
latter = []
for i in range(Q):
    q = list(input().split())
    if q[0] == '1':
        flag = not flag
    else:
        f, c = q[1], q[2]
        if (f == '1' and flag) or (f == '2' and not flag):
            # 単純な文字連結だとTLEになる
            #S = c + S
            first.append(c)
        else:
            #S = S + c
            latter.append(c)
first.reverse()
S = ''.join(first) + S + ''.join(latter)
# クエリを最後まで見た後の文字列の状態が反転の場合
if not flag:
    S = S[::-1]
print(S)