[Python]12789ドジャース
5328 ワード
[Python]12789ドジャース
質問する
仁荷(インハ)大学の学生会は、中間、期末試験の時、疲れ果てた学生たちのためにおやつを配るおやつを贈るイベントを開いた.試験期間中、承桓はおやつを食べようと思うと胸がどきどきし、勉強に集中できなかった.今回の中間試験で、スンファンは興奮した気持ちで、おやつをもらうために事前に知らせた場所に時間通りに到着した.しかし、これは何の青天の霹靂ですか.そこにはすでにすべての学生が集まっていて、承桓は最後の番号表を手に入れた.雪の上に霜が降りたのは、何人かの良心が損なわれた学生が繰り返し割り込みを経て、列に並ぶ順番さえ乱されたことだ.おやつを配っていた仁圭(インギュ)さんは、「番号表の順におやつをあげるしかない」と不満を爆発させた.
この時、学生たちは順番に並びたいと思っていたが、空間が小さすぎて、勝手に歩けなかった.幸いなことに、列の左側には一列に並ぶスペースがあり、このスペースをうまく利用すれば、おやつが順番に届くかもしれません.うっかりしておやつが手に入らないかもしれないという危機感を感じたスンファンは、自分のコンピューターアルゴリズムの知識を利用して、すべての人が順番におやつを手に入れることができるかどうかを確認するプログラムを作ることにした.もし不可能なら承桓は今度の中間試験を失敗するだろうし、可能ならば、力を得て中間試験をよく受けることができるかもしれない.
人々は今一列に並んでいて、一番前の人だけが移動することができます.仁圭は番号表の順にしか通れないルートを作った.この線と行列の一番前の人の間にはずらりと並んだスペースがあります.今、列の中の人はこの空間に来ることができますが、反対することはできません.承桓の番組を完成させる.
現在のおやつの配送空間は図のようになっています.
上の例は下図のように、誰もが順番におやつを受け取ることができます.
入力
入力された最初の行は、勝煥の前に立っている学生数だ. N(1 ≤ N ≤1000、自然数).
次の列は、承桓が前に立っている全生徒の番号表(1、2、…、N)の前から後ろへの順番だ.
しゅつりょく
承桓が無事におやつを受け取ることができれば、「Nice」(引用符を含まない)を出力し、そうでなければ「Sad」(引用符を含まない)を出力する.
入力例1
5
5 4 1 3 2
サンプル出力1
Nice
コード#コード#
import sys
N = int(input())
stack2 = []
cnt = 1
l = list(map(int,sys.stdin.readline().split()))
while l:
if cnt==l[0]:
cnt+=1
l.pop(0)
else:
stack2.append(l.pop(0))
while stack2:
if stack2[-1] == cnt:
stack2.pop()
cnt+=1
else:
break
if len(stack2)==0:
print("Nice")
else:
print("Sad")
入力値をリスト形式で受信します.
要素がこのリストに存在する場合は、この操作を繰り返します.cnt値がlの最初の値に等しい場合、cntを増やして最初の値をポップアップします.
cnt値が最初の値と異なる場合は、stackリストに値を追加してポップアップします.
stackが存在し、stackの最後の値がcntである場合、その値がポップアップされ、cntが増加します.あるいはbreakで繰り返しを終了します.
初めてwhile stack 2部分をwhile lに入れなかったのですが、while lが終了してから実行し、タイムアウトしました.
Reference
この問題について([Python]12789ドジャース), 我々は、より多くの情報をここで見つけました
https://velog.io/@dustndus8/파이썬Python-12789.-도키도키-간식드리미
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
5
5 4 1 3 2
Nice
import sys
N = int(input())
stack2 = []
cnt = 1
l = list(map(int,sys.stdin.readline().split()))
while l:
if cnt==l[0]:
cnt+=1
l.pop(0)
else:
stack2.append(l.pop(0))
while stack2:
if stack2[-1] == cnt:
stack2.pop()
cnt+=1
else:
break
if len(stack2)==0:
print("Nice")
else:
print("Sad")
Reference
この問題について([Python]12789ドジャース), 我々は、より多くの情報をここで見つけました https://velog.io/@dustndus8/파이썬Python-12789.-도키도키-간식드리미テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol