내 맴
[ BAEKJOON ] No. 10866 덱 본문
728x90
문제 )
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
www.acmicpc.net
[ 풀이 ]
✔ Deque에 대한 문제!
< Deque 이란? >
Array의 양쪽에서 입출력이 모두 가능한 자료구조
저번에 풀었던 큐 문제를 참조해서 코딩하였다. (코드가 겹침)
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
'개발 공부 > Algorithm' 카테고리의 다른 글
[ BAEKJOON ] No. 5430 AC (0) | 2020.04.21 |
---|---|
[ BAEKJOON ] No. 1021 회전하는큐 (0) | 2020.04.18 |
[ BAEKJOON ] No. 1966 프린터 큐 (0) | 2020.04.11 |
[ BAEKJOON ] No. 11866 요세푸스 문제 0 (0) | 2020.04.10 |
Greedy Algorithm - Fractional Knapsack Problem (0) | 2020.04.09 |