[BOJ Baekjun]-Q2 18258 Python


https://www.acmicpc.net/problem/18258


問題の説明
n個のコマンドを受け付け、実行結果をそのまま表示すればよい.
に答える
実際、Qという資料構造を知っていれば、これは難しい問題ではありません.
また、PythonでQを使うのは非常に簡単な問題なので、より便利です.
肝心なのは時間です.
数回のリスト演算が必要ですが、与えられた時間は短いです.
最も時間がかかる演算は、最初の(一番前の)要素を減算します.
最初の要素を削除すると、後ろのすべての要素が前に引っ張られます.
通常、最初の要素を削除するときに多くのdelが使用されます.これは私たちが予想した最悪の状況で、リストの長さに従って前に引くべきです.
Pythonのdequeは、popleftという方法をサポートする.内部がどのように動いているかを知っていて、O(1)に近い性能の仕事が生まれると言っています...
import deque

dq = deque()

dq.append(1)
item = dq.popleft()
dequeの使い方は上のすべてです
追加
時間を考えるなら、考えずにsys.stdin.readline()を使います.

📌 完全なコード

import sys
from collections import deque

n = int(sys.stdin.readline())
dq = deque()

for _ in range(n):
    command = sys.stdin.readline().split()
    #command = input().split()

    if command[0] == 'push':
        dq.append(command[1])
    elif command[0] == 'front':
        print(dq[0] if len(dq) > 0 else -1)
    elif command[0] == 'back':
        print(dq[-1] if len(dq) > 0 else -1)
    elif command[0] == 'empty':
        print(0 if len(dq) > 0 else 1)
    elif command[0] == 'pop':
        if len(dq) > 0:
            print(dq.popleft())
        else:
            print(-1)
    elif command[0] == 'size':
        print(len(dq))