#6 Queues: A Tale of Two Stacks
キュー操作を行う問題。以下のような入力を受け取る。
6 1 42 2 1 14 3 1 28
1行目はデータの数。2行目以下は、1つもしくはスペース区切りで2つの数値が入力される。
最初の数値をtype、2つめの数値をx と呼ぶ。以下のような3タイプの操作を行う。
- type 1: x をキュー(enqueue)に追加する
- type 2: キュー値を1つ取り出す(dequeue)
- type 3: キューの先頭の値を表示する
solution
input = $stdin.read.split("\n") n, lines, queue = input.shift.to_i, input, [] lines.each do |l| t, x = l.split(" ") case t when "1" then queue.push(x) when "2" then queue.shift when "3" then puts queue.first end end
キューとは
キュー(英: queue)、あるいは待ち行列はコンピュータの基本的なデータ構造の一つ。データを先入れ先出し[1]のリスト構造で保持するものである。キューからデータを取り出すときには、先に入れられたデータから順に取り出される。キューにデータを入れることをエンキュー、取り出すことをデキューという。