[TIL]10月20日:Python sys.stdin.readline()


今日からキャンプアルゴリズム週間です.白準10773号題.

質問する


ロコド機長の
ヒョンミンがお金を管理するのを手伝う過程で、残念なことにいつも忙しくて、ヒョンはお金を誤って呼ぶ事故をよく犯します.
宰賢は間違った数字を叫ぶたびに0を叫んで、最近の
このようにすべての数字を書いた後の数字の和を知りたい.渽民を助けましょう!

入力


最初の行は整数Kを与える.(1 ≤ K ≤ 100,000)
その後、K行に整数を与えます.整数には0~1000000の値があり、整数が0の場合は最後に書き込まれた数値が消去され、そうでない場合は対応する数値が書き込まれます.
整数が0の場合に消去できることを保証します.

しゅつりょく


民が最終的に書いた数字とを出力します.最後に書いた数の和は2です.³¹-1以下の整数.

最初にコミットされたコード

num_list = []

a = int(input())

for i in range(a):
    num = int(input())
    if num != 0:
        num_list.append(num)
    else:
        num_list.pop()
print(sum(num_list))
こうして提出しましたが、百俊採点の時間は思ったより長いです.
だからグーグルで検索した結果!
1~2行の入力の問題とは異なり、複数行を繰り返し文で入力する必要がある場合、input()で入力するとタイムアウトする可能性があります.
最初の行TestCaseを入力する場合はinput()を使用します.
ただし、複数行の繰り返し入力が受信された場合sys.stdin.readline()を使用してもタイムアウトは発生しません.
リファレンス
だから私が提出したコードに直接適用しました.

sys.stdin.readline()を適用するコード

from sys import stdin

num_list = []
a = int(stdin.readline())

for i in range(a):
    num = int(stdin.readline())
    if num != 0:
        num_list.append(num)
    else:
        num_list.pop()
print(sum(num_list))
最初に作成したコードとはあまり違いませんが、inputではなくsysです.stdin.readline()を使用しただけです.

二人の採点時間を比較する



大きな違いが見られます.