[Python] 알고리즘/Silver

[18115] 카드 놓기 (Python)

-Becca- 2021. 11. 8. 16:42

[문제]

https://www.acmicpc.net/problem/18115

 

18115번: 카드 놓기

수현이는 카드 기술을 연습하고 있다. 수현이의 손에 들린 카드를 하나씩 내려놓아 바닥에 쌓으려고 한다. 수현이가 쓸 수 있는 기술은 다음 3가지다. 제일 위의 카드 1장을 바닥에 내려놓는다.

www.acmicpc.net


알고리즘 분류는 자료 구조, 덱 입니다.

덱(deque)은 양방향 큐이므로 앞, 뒤에서 값을 추가할 수 있습니다.

파이썬에서 덱은 from collections import deque를 쓰면 사용 가능합니다.


[코드]

import sys
from collections import deque

N = int(sys.stdin.readline())
li = list(map(int, sys.stdin.readline().split()))
li.reverse()

dq = deque()
for i in range(N):
    if li[i] == 1:
        dq.appendleft(i + 1)
    elif li[i] == 2:
        dq.insert(1, i + 1)
    elif li[i] == 3:
        dq.append(i + 1)

for i in dq:
    print(i, end=" ")