[伯俊]18115号-放卡Python
質問する
秀賢はトランプの技術を練習している.秀賢が持っているカードを一枚一枚置いて地面に積み上げたい.秀賢が使える技術は3種類ある.最初のカードを地面に置いた. の上に、2枚目のカードを地面に置きます.カードは2枚以上しか使えません. 一番下の札を地面に置きます.カードは2枚以上しか使えません. 秀賢は最初にN枚のカードを持っていた.カードには1からNまでの整数が重複しないと書かれています.N回スキルを使ってカードを下ろすとき、置いてあるカードを確認し、上から順に1、2、…、Nと書いてあります!
驚いた秀賢はカードがどのように置かれているのか知り始めた.初期カードの状態をプリントアウトします.
入力
第1行はN(1≦N≦106)を与える.
2行目は長さNの数列Aを与える.Aiがxなら、2回目にカードを置くときにx番技術を使ったということです.Aiは1.2.3の1つで、Anはいつも1です.
しゅつりょく
初期カードの状態を上から順に出力します.
入力例1に導入された技術を逆にデックに挿入する. 1であれば、デックの最後に置きます. 2の場合は、デックの後ろに2番目に入れます. 3の場合は、デックの一番前に置きます. そうすれば、入る順番が逆になって、もう1枚カードを入れると、元のカードの番号がわかります.
秀賢はトランプの技術を練習している.秀賢が持っているカードを一枚一枚置いて地面に積み上げたい.秀賢が使える技術は3種類ある.
驚いた秀賢はカードがどのように置かれているのか知り始めた.初期カードの状態をプリントアウトします.
入力
第1行はN(1≦N≦106)を与える.
2行目は長さNの数列Aを与える.Aiがxなら、2回目にカードを置くときにx番技術を使ったということです.Aiは1.2.3の1つで、Anはいつも1です.
しゅつりょく
初期カードの状態を上から順に出力します.
入力例1
5
1 1 1 1 1
サンプル出力15 4 3 2 1
入力例25
2 3 3 2 1
サンプル出力21 5 2 3 4
に答えるfrom collections import deque
import sys
input = sys.stdin.readline
n = int(input().rstrip())
stack = [i for i in range(n,0,-1)]
ans = deque()
skills = list(map(int,input().rstrip().split()))
skills.reverse()
for skill in skills:
if skill == 1:
ans.append(stack.pop())
elif skill == 2:
ans.insert(-1,stack.pop())
elif skill == 3:
ans.appendleft(stack.pop())
ans.reverse()
print(*ans)
整理する2 3 3 2 1
の場合、1 2 3 3 2
の順にカードを入れ直します.Reference
この問題について([伯俊]18115号-放卡Python), 我々は、より多くの情報をここで見つけました https://velog.io/@tunaman95/백준-18115번-카드-놓기-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol