728x90
반응형
구현 언어: 파이썬
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
orders = list(map(int, input().split())) # 스택이라 deque 대신 list
original = deque() # 양방향에서 데이터를 넣어야 해서 덱
for i in range(1, n+1):
curr = orders.pop() # 명령 복기
if curr == 1:
original.appendleft(i)
elif curr == 2:
original.insert(1, i)
elif curr == 3:
original.append(i)
print(*original) # deque([요소])에서 요소만 프린트하는 방법
시도 횟수: 1
구현 포인트:
일단 엄청 헷갈렸다.
위에서부터 1, 2, 3, 4, 5, ..., n으로 있다는 것은 우리가 이 문제를 풀 때 명령을 거꾸로 복기해야 함을 의미한다.
for문(카드 번호)은 1, 2, 3, 4, 5, ..., n 순으로 반복하고 명령은 뒤에서부터 실행시킨다.
간단히 말하면 되감기 같은 구현인 거다. 카드는 맨 위에서부터 집어 다시 손에 넣고 그때마다 했던 명령을 되돌리는!
어제 파이썬 알고리즘 스터디를 하고 와서 그런지 이번에 문제 풀 때는 스택을 사용할지, 큐를 사용할지, 덱을 사용할지 엄청 고민했다. 조금이라도 시간을 줄이겠다는 불굴의 의지 ..
728x90
반응형
'Archive > BOJ' 카테고리의 다른 글
백준 18870번: 좌표 압축 (0) | 2021.04.12 |
---|---|
백준 7785번: 회사에 있는 사람 (0) | 2021.04.09 |
백준 1003번: 피보나치 함수 (0) | 2021.03.14 |
백준 1764번: 듣보잡 (0) | 2021.03.13 |
백준 1620번: 나는야 포켓몬 마스터 이다솜 (0) | 2021.03.13 |