다음 명령 6가지의 조건을 판별하여 수행하는 알고리즘을 구성한다
- push X: 정수 X를 큐에 넣는 연산이다.
- pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 큐에 들어있는 정수의 개수를 출력한다.
- empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
- front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
import sys
from collections import deque
queue = deque()
N = int(sys.stdin.readline())
for _ in range(N) :
i = sys.stdin.readline().split()
if i[0] == 'push' :
queue.append(int(i[1]))
elif i[0] == 'pop' :
if not queue :
print (-1)
else :
print(queue[0])
queue.popleft()
elif i[0] == 'size' :
print(len(queue))
elif i[0] == 'empty' :
if len(queue) == 0 :
print(1)
else :
print(0)
elif i[0] == 'front' :
if not queue:
print(-1)
else :
print(queue[0])
elif i[0] == 'back' :
if not queue :
print(-1)
else :
print(queue[-1])
나름 열심히 짜봤는 데 실행은 되지만 큐를 공부할때 여러 사람의 코드를 봐서 그런지 난잡한 느낌도 든다
각각의 조건 중에서 공통점이 있다면 이를 공통기준으로 잡고 판별했다면 코드의 실행속도를 조금이나마 줄일 수 있지 않았을까라는 생각과 함께 앞으로 코드를 짤때는 정확도뿐만 아니라 실행 속도 또한 고려 대상으로 삼을 수 있도록 노력해야겠다