0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

初めてのQueue(PHP)

Last updated at Posted at 2021-06-27

はじめに

PaizaAランクレベルアップ問題集より
陣取りの結末 (paizaランク B 相当)

この問題に取り組むにあたり、Queueを学んだため自分用にまとめる。

〇キューとスタック

キュー(Queue)

先入れ先出し(FIFO:First in First Out)方式のデータ構造

Queueは、入力されたデータがその順番通りに処理されなければ困る状況で使われる。

スタック(Stack)

後入れ先出し(FILO:First in Last Out)方式のデータ構造

データを追加することを「push」、データを取り出すことを「pop」という。

QueueとStackと聞くと難しく感じるが、取り出す順番が異なるくらいで配列の操作で簡単に実現できる。
そういえば、基本情報の勉強をした時に勉強していた(データの持ち方編)。

参考「キタミ式イラストIT塾 基本情報技術者 平成31年/01年 p556.557」

PHPでのQueueの実装について

array_push()array_shift()を使って実装できる。

・array_push()
配列の最後に1つ以上の要素を追加する

・array_shift()
配列の先頭から要素を一つ取り出す。
取り出した後は、配列内の要素は前にずれる。数値添え字の配列の場合、キーは0から順に新たに振りなおされるが、リテラル(文字)のキーには影響しない

イメージ画像

image.png

Paiza問題集 ざっくり解説(自分用)

image.png

こちらの問題であればざっくりとした流れは以下のイメージ
1.初期位置の取得しQueueに格納(array_push)
2.Queueから先頭のデータを取り出し(array_shift)、その位置の上下左右が移動可能かどうか判定
→移動可能であれば、移動後の位置を取得しQueueに格納
3.Queueの中身がなくなるまで2を繰り返す。

移動した箇所を「*」に置き換える等の処理は省いているが、大まかな処理の流れはこんな感じ(多分)

参考

【Java】一目でわかるキューとスタック!データ管理をラクにしよう!
PHPにおけるStackとQueue
array_push
array_shift

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?