5430 AC
9918 ワード
質問元:https://www.acmicpc.net/problem/5430
簡単です.RとDの2つの機能しかないので,(1)を反転したり(2)を取り除いたりするだけでよい.
入力された文字列から数字以外の記号を除去するため,「Pythonアルゴリズムインタビュー」でも効率の高い正規表現を用いた処理が見られた.最初は文字列についての問題だったので、考えずにRを純粋に機能に反映していました.
そこで時間短縮のために修正が必要で、Rという機能を実現する際には、直接反転する必要はなく、配列の有無によって前後文字の削除だけで済むので、DEQUEを使うことにしました.結果は成功した!
上のコードは左側のように正常に動作し、下のコードは右側のようにdequeに何かを残しています.
斜線を使用しても、インデックスに何も指示されず、文字列はオブジェクトを生成するようです.
そして.
リストまたはdequeの空の文字列pop()に対してもエラーはありませんか?空の文字列でもpop!!pop()の後は空の状態です.
とりあえずこの部分は頭の中で参考にしてみます(splitの応用も!)上記のように正規表現をスライスすることで、時間を2倍程度短縮することができる.
外部変数の値を変更する場合はglobalまたは戻り値を使用して変更を渡します.
思考過程.
簡単です.RとDの2つの機能しかないので,(1)を反転したり(2)を取り除いたりするだけでよい.
入力された文字列から数字以外の記号を除去するため,「Pythonアルゴリズムインタビュー」でも効率の高い正規表現を用いた処理が見られた.最初は文字列についての問題だったので、考えずにRを純粋に機能に反映していました.
arr=arr[::-1]
このようにするには、もちろんこれらの要素を覆すのに長い時間がかかります.△短い文字列については、この点は重要ではありませんが、このような10万の問題については、時間を考慮しなければなりません.そこで時間短縮のために修正が必要で、Rという機能を実現する際には、直接反転する必要はなく、配列の有無によって前後文字の削除だけで済むので、DEQUEを使うことにしました.結果は成功した!
import sys
import re
from collections import deque
T = int(sys.stdin.readline().rstrip("\n"))
def AC(function,n) :
global nums #함수 내부 변경을 통해 밖에서도 변경 적용
reverse=1
for f in function :
if f == "R":
reverse = 1 if reverse==-1 else -1
continue
elif f == "D" :
if not nums:
return False
if reverse==1 :
nums.popleft()
else: #reverse==-1
nums.pop()
if reverse==-1:
nums=list(nums)[::-1]
return True
for _ in range(T) :
function = sys.stdin.readline().rstrip("\n")
n = int(sys.stdin.readline().rstrip("\n"))
nums = deque(list(re.sub('[^0-9]',' ',sys.stdin.readline().rstrip("\n")).split()))
if AC(function,n) :
print("["+",".join(list(nums))+"]")
else :
print("error")
より効率的な方法を追求するのは常に正しいので、他の高速運転の人のコードを参考にすることができます.nums = deque(list(re.sub('[^0-9]',' ',sys.stdin.readline().rstrip("\n")).split()))
異なる正規表現の作成nums = deque(sys.stdin.readline().rstrip("\n")[1:-1].split(","))
この時!おもしろい間違いが起こる上のコードは左側のように正常に動作し、下のコードは右側のようにdequeに何かを残しています.
斜線を使用しても、インデックスに何も指示されず、文字列はオブジェクトを生成するようです.
そして.
リストまたはdequeの空の文字列pop()に対してもエラーはありませんか?空の文字列でもpop!!pop()の後は空の状態です.
とりあえずこの部分は頭の中で参考にしてみます(splitの応用も!)上記のように正規表現をスライスすることで、時間を2倍程度短縮することができる.
外部変数の値を変更する場合はglobalまたは戻り値を使用して変更を渡します.
Reference
この問題について(5430 AC), 我々は、より多くの情報をここで見つけました https://velog.io/@wondang120/5430번-ACテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol