<내 코드>
import sys
from collections import deque
n = int(sys.stdin.readline())
deque = deque()
def push(queque, x):
deque.append(x)
def pop(deque):
if(not deque):
return -1
else:
return deque.popleft()
def size():
return len(deque)
def empty():
if(not deque):
return 1
else:
return 0
def front():
if(not deque):
return -1
else:
return deque[0]
def back():
if(not deque):
return -1
else:
return deque[-1]
for i in range(n):
oper = sys.stdin.readline().split()
if (oper[0] == "push"):
push(deque, oper[1])
elif(oper[0] == "pop"):
print(pop(deque))
elif(oper[0] == "size"):
print(size())
elif(oper[0] == "empty"):
print(empty())
elif(oper[0] == "front"):
print(front())
elif(oper[0] == "back"):
print(back())
이 문제는 시간 복잡도가 O(1)이 되어야 하는데, 일반적인 리스트의 pop() 함수를 사용하면 첫 번째 요소를 pop 할 때는 O(n)의 시간이 소요된다. 그래서 collections의 deque를 사용했다. pop 부분에서 popleft를 이용해 시간을 단축시킬 수 있다. deque는 스택과 큐를 합친 자료구조이다.
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 1966] 프린터 큐 - Python (0) | 2020.08.17 |
---|---|
[백준 2164] 카드 2 - Python (0) | 2020.07.25 |
[백준 1874] 스택 수열 - Python (0) | 2020.07.24 |
[백준 10828] 스택 - Python (0) | 2020.07.24 |
[백준 10814] 나이순 정렬 - Python (0) | 2020.07.22 |