코딩 테스트(Python)/백준, 프로그래머스
10866 덱
5_hyun
2022. 2. 7. 20:04
반응형
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
내 풀이(맞음)
from collections import deque
class Deque:
def __init__(self, ary = deque()):
self.ary = ary
def push_front(self, ary, item):
ary.append(item)
def push_back(self, ary, item):
ary.appendleft(item)
def pop_front(self, ary):
if ary:
t = ary[len(ary)-1]
del ary[len(ary)-1]
return t
else:
return -1
def pop_back(self, ary):
if ary:
t = ary[0]
del ary[0]
return t
else:
return -1
def size(self, ary):
return len(ary)
def empty(self, ary):
if ary:
return 0
else:
return 1
def front(self, ary):
if ary:
return ary[len(ary)-1]
else:
return -1
def back(self, ary):
if ary:
return ary[0]
else:
return -1
a = deque()
d = Deque(a)
n = int(input())
rst = []
for i in range(n):
x = input().split()
if x[0] == 'push_front':
d.push_front(a, x[1])
elif x[0] == 'push_back':
d.push_back(a, x[1])
elif x[0] == 'pop_front':
rst.append(d.pop_front(a))
elif x[0] == 'pop_back':
rst.append(d.pop_back(a))
elif x[0] == 'size':
rst.append(d.size(a))
elif x[0] == 'empty':
rst.append(d.empty(a))
elif x[0] == 'front':
rst.append(d.front(a))
elif x[0] == 'back':
rst.append(d.back(a))
for i in rst:
print(i)
init로 덱인 ary를 만들어줍니다. push_front에서 앞쪽에 삽입하고 push_back에서 뒤쪽에 삽입합니다. 그리고 pop_front에서는 맨 앞쪽걸 삭제하고 출력하고 pop_back에서는 맨 뒤쪽걸 삭제하고 출력합니다. size에선 개수를 출력하고 empty는 비어있으면 1 안비었으면 0을 출력합니다. fornt에서는 맨 앞걸 출력하고 back에서는 맨 뒤에걸 출력합니다.
반응형