質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

584閲覧

AtCoder ABC 158 D問題

petrabaron

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/03/08 01:36

前提・実現したいこと

問題に正答したい

発生している問題・エラーメッセージ

一部サンプルがTLEになる

該当のソースコード

python

1s = input() 2q = int(input()) 3num = 0 4ans = "0" 5 6for _ in range(q): 7 query = list(input().split()) 8 if len(query) == 1: 9 num += 1 10 else: 11 if int(query[1]) == 1: 12 if num%2 == 0: 13 # 先頭 14 ans = query[2] + ans 15 else: 16 ans = ans + query[2] 17 else: 18 if num%2 == 0: 19 # 後方 20 ans = ans + query[2] 21 else: 22 ans = query[2] + ans 23 24mes = ans.replace("0", s) 25if num%2 == 0: 26 print(mes) 27else: 28 print(mes[::-1]) 29

試したこと

解説にある通り、forループ中では反転を行わずに最後に反転して計算量を削減する工夫をしました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ABC 158 解説

ここで、C + + などで普通の文字列型の先頭に追加する操作は計算量が悪いため、deque で文字列

を管理するか、左右で分けて文字列を保持し最後に適切に連結するといった方法で対処できます。

と記述あるようにPythonでも文字列のまま処理するとTLEになります。
たとえばdeque オブジェクトを使うと通ります。

投稿2020/03/08 02:39

can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問