내 맴

[ BAEKJOON ] No. 10866 덱 본문

Algorithm/Baekjoon 문제풀이

[ BAEKJOON ] No. 10866 덱

뺙사우르수 2020. 4. 16. 16:37
728x90

문제 )

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

 

10866번: 덱

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

www.acmicpc.net

 

[ 풀이 ]

Deque에 대한 문제!

 

< Deque 이란? >

Array의 양쪽에서 입출력이 모두 가능한 자료구조 

 

Deque

 

 

저번에 풀었던 큐 문제를 참조해서 코딩하였다. (코드가 겹침) 

https://luz0911.tistory.com/108?category=765467

 

[ BAEKJOON ] No. 18258 큐2

문제 ) https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다..

luz0911.tistory.com

collections모듈의 deque를 사용해서 문제를 해결했다.

 

- python code

 

from collections import deque
import sys
input= sys.stdin.readline

def menu(command):
    if command[0]=='push_front':
        push_front(command[1])
    elif command[0]=='push_back':
        push_back(command[1])
    elif command[0]=='pop_front':
        pop_front()
    elif command[0]=='pop_back':
        pop_back()
    elif command[0]=='size':
        Size()
    elif command[0]=='empty':
        empty()
    elif command[0]=='front':
        front()  
    elif command[0]=='back':
        back()

# push_front X
def push_front(X):
    deque.appendleft(X)

# push_back X
def push_back(X):
    deque.append(X)

# pop
def pop_front():
    if not deque:
        print(-1)
    else:
        num=deque.popleft()
        print(num)

#pop_back 
def pop_back():
    if not deque:
        print(-1)
    else:
        num=deque.pop()
        print(num)

# size
def Size():
    print(len(deque))

# empty
def empty():
    if not deque:
        print(1)
    else:
        print(0)
        
# front
def front():
    if not deque:
        print(-1)
    else:
        print(deque[0])
        
# back
def back():
    if not deque:
        print(-1)
    else:
        print(deque[-1])

deque =deque([])
N=int(input())
for i in range(N):
    command =input().strip().split()
    menu(command)

 

 

728x90