문제 링크 : https://www.acmicpc.net/problem/18258
deque 라이브러리를 사용하지 않고 풀었을 때 시간초과가 떴으나 deque 라이브러리의 append와 popleft 를 사용했고 문제를 해결할 수 있었다.
deque란 파이썬의 collections module 에서 사용할 수 있으며, 스택과 큐 두가지를 일반화 한 것이다. 따라서 두가지의 역할을 모두 수행할 수 있고 양방향에서 element를 추가하고 제거할 수 있다.
여기서 성능은 추가와 제거를 O(1) 으로 지원한다.
아래는 제출 코드이다.
from collections import deque
import sys
n = int(sys.stdin.readline())
queue = deque()
for i in range(n):
command = sys.stdin.readline().split()
if command[0] == "push":
queue.append(command[1])
if command[0] == "pop":
if len(queue):
print(queue.popleft())
else:
print(-1)
if command[0] == "size":
print(len(queue))
if command[0] == "empty":
if len(queue):
print(0)
else:
print(1)
if command[0] == "front":
if len(queue):
print(queue[0])
else:
print(-1)
if command[0] == "back":
if len(queue):
print(queue[-1])
else:
print(-1)
# 앞자리 => 나누기로 구하기
# 뒷자리 => 나머지로 구하기
런타임 에러를 방지하기 위해 sys 라이브러리 또한 사용했다.
'알고리즘' 카테고리의 다른 글
자료구조 ) LinkedList (연결리스트)의 기본 구성 (0) | 2023.05.25 |
---|---|
백준 ) 1110 - 더하기 사이클 Python (0) | 2023.05.24 |
자료구조 - Stack, Queue | 백준 10828 , 10773 Python (0) | 2023.05.24 |
백준 10250 ) ACM 호텔 Python (0) | 2023.05.24 |
시간복잡도 BigO (0) | 2023.05.23 |