https://www.acmicpc.net/problem/10866
import sys
from collections import deque
# 덱
deq = deque()
# 비어있는지 확인하는 함수
def isEmpty():
global deq
if len(deq) > 0:
return 0
else:
return 1
# 명령어를 실행하는 함수
def do_cmd(*args):
global deq
if len(args) == 1:
cmd = args[0]
if cmd == "pop_front":
# 덱의 가장 앞에 있는 수를 빼고 그 수를 출력
# 만약 덱에 들어있는 정수가 없는 경우에는 -1
if isEmpty():
print(-1)
else:
print(deq.popleft())
elif cmd == "pop_back":
# 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력
# 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
if isEmpty():
print(-1)
else:
print(deq.pop())
elif cmd == "size":
# 덱에 들어있는 정수의 개수 출력
print(len(deq))
elif cmd == "empty":
# 덱이 비어 있으면 1을, 아니면 0을 출력
print(isEmpty())
elif cmd == "front":
# 덱의 가장 앞에 있는 정수를 출력. 덱에 들어있는 정수가 없으면 -1
if isEmpty():
print(-1)
else:
print(deq[0])
elif cmd == "back":
# 덱의 가장 뒤에 있는 정수를 출력. 덱에 들어있는 정수가 없으면 -1
if isEmpty():
print(-1)
else:
print(deq[-1])
else:
cmd = args[0]
num = args[1]
if cmd == "push_front":
# 정수 X를 덱의 앞에 넣는다
deq.appendleft(num)
elif cmd == "push_back":
# 정수 X를 덱의 뒤에 넣는다
deq.append(num)
input = sys.stdin.readline
n = int(input())
for _ in range(n):
# 명령어를 저장하는 cmd
cmd = ""
# 주어지는 수를 저장하는 num
num = 0
in_data = input().split()
if len(in_data) == 1:
cmd = in_data[0]
do_cmd(cmd)
else:
cmd = in_data[0]
num = int(in_data[1])
do_cmd(cmd, num)