[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に短縮
Reference
この問題について([BOJ]Python-1874スタック数列), 我々は、より多くの情報をここで見つけました https://velog.io/@ohyujeong/BOJ-파이썬-1874-스택-수열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol