[BOJ]Python-1874スタック数列



質問リンク:https://www.acmicpc.net/problem/1874
Pythonコード
import sys

n=int(sys.stdin.readline())

stack=[] 
result=[]
check=0
i=1

for _ in range(n):
    num=n=int(sys.stdin.readline())
    while i<=num:
        stack.append(i)
        result.append('+')
        i+=1
    if stack[-1]==num:
        stack.pop()
        result.append('-')
    else:
        check=1
        print('NO')
        break

if check==0:
    for j in result:
        print(j) 
最初は問題が理解できなかったので、ずっとうろうろしていました.質問ページのヒントを参考にすればいいです.
1,2,3,4... nをスタックに順番に押し込み、スタックの上部に押し込みます.
入力したnumと同じならpopできます.
問題の例は4.3.6.8です.numを順番に入力します.
numになるまでスタックに数値を押します.
最初は1.2.3.4がスタックに押し込まれ、topは4になります.
4を弾けば
次のトップは3です.
入力順が4,3なので3度popをあげます.
今topは2で、3次の入力numは6です.
したがって,スタックのtopが6になるまで,スタックに数字をプッシュする.
文を終了すると、スタックのtopがnumに等しくない場合、数列は正常に作成されません.

  • 最初は入力でしたが、時間が長すぎました.
    sys.stdin.readline()で受信します.
    時間を4120 ms>228 msに短縮