[BOJ Baekjun]-Q2 18258 Python
https://www.acmicpc.net/problem/18258
問題の説明
n個のコマンドを受け付け、実行結果をそのまま表示すればよい.
に答える
実際、Qという資料構造を知っていれば、これは難しい問題ではありません.
また、PythonでQを使うのは非常に簡単な問題なので、より便利です.
肝心なのは時間です.
数回のリスト演算が必要ですが、与えられた時間は短いです.
最も時間がかかる演算は、最初の(一番前の)要素を減算します.
最初の要素を削除すると、後ろのすべての要素が前に引っ張られます.
通常、最初の要素を削除するときに多くの
Pythonの
追加
時間を考えるなら、考えずに
問題の説明
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))
Reference
この問題について([BOJ Baekjun]-Q2 18258 Python), 我々は、より多くの情報をここで見つけました https://velog.io/@dhk22/BOJ-백준-큐2-18258-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol