알고리즘 PS

[Python] 백준 #10866 덱

on_doing 2021. 1. 14. 19:38
728x90

www.acmicpc.net/problem/10866

 

10866번: 덱

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

import sys
from collections import deque

deck=deque()
def push_back(x):
    deck.append(x)

def push_front(x):
    deck.appendleft(x)
    
def pop_front():
    if len(deck)==0:
        print(-1)
    else:
        a=deck.popleft()
        print(a)
        
def pop_back():

    if len(deck)==0:
        print(-1)
    else:
        print(deck.pop())
        
def size():
    print(len(deck))
    
def empty():
    s=len(deck)
    if s==0:
        print(1)
    else:
        print(0)
    
def front():
    s=len(deck)
    if s==0:
        print(-1)
    else:
        print(deck[0])
        
        
def back():
    s=len(deck)
    if s==0:
        print(-1)
    else:
        print(deck[s-1])
    
n=int(sys.stdin.readline())


for i in range(n):
    k=sys.stdin.readline().split()

    if k[0]=='push_front':
        push_front(k[1])
    elif k[0]=='push_back':
        push_back(k[1])
    elif k[0]=='pop_front':
        pop_front()
    elif k[0]=='pop_back':
        pop_back()   
    elif k[0]=='size':
        size()
    elif k[0]=='empty':
        empty()
    elif k[0]=='front':
        front()
    elif k[0]=='back':
        back()
728x90