キュー
キュー (Queue) は、多くのアルゴリズムで使われる主要なデータ構造の一つで、実際の生活での行列にとても似ています。最初に追加された要素が、最初に「処理」されて取り除かれるしくみです。
たとえば、コーヒーを待って並んでいるアリたちの列を想像してみましょう。列の先頭にいるアリがコーヒーを受け取って列を抜けると、その次のアリがまたコーヒーを受け取り、列を抜ける……という流れで、列が空になるまで続きます。

ほとんどの一般的なプログラミング言語 (Python、C++、Java など) では、キューのデータ構造があらかじめ実装されているため、宣言や利用はとても簡単です。それでも、リンクドリストなどを使って自分でキューを実装する方法も考えられます。あなたならどう実装しますか 🤔?
from queue import Queue
q = Queue() # 新しいQueueを作成
q.put(1) # Queueの先頭に1を追加
q.put(2) # 次に2を追加
q.put(3) # 2の次に3を追加
# get()を使ってQueueから要素を取り除く
print(q.get()) # 1を出力
print(q.get()) # 2を出力
print(q.get()) # 3を出力
チャレンジ: キューのシミュレーション
このシステムでは、店内にいる顧客を管理する必要があります。やることはシンプルで、顧客を待ち行列に追加する操作と、先頭の顧客が満足して離れる操作が必要です。顧客を取り除くたびに、その顧客の名前を出力してください。
入力
最初の行には、整数 n
(1 ≤ n ≤ 100 000) が1つ含まれます。
続く n
行には、操作内容が書かれており、操作は add
または pop
のいずれかです:
add
の場合は、その後ろに名前が続きます。ここで指定された顧客を待ち行列に追加します。pop
の場合は操作名のみで、他に何も続きません。
いずれの pop
操作が実行される際にも、必ずキューに顧客がいる状態が保証されています。
また、名前は最大で20文字以内であることが保証されています。
出力
各 pop
操作が実行されるたびに、待ち行列の先頭にいる顧客の名前を出力してください。
例
入力 | 出力 |
---|---|
9 add Steven add Sam pop add Sergio add Don pop add John pop pop | Steven Sam Sergio Don |
4 add John Ford add Tom Ford pop pop | John Ford Tom Ford |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB