配列活用メニュー】> 【配列に対しての複雑な処理】STEP: 3 queue (9) 係 (paizaランク C 相当) [難易度: 1387 ±18]

※リンク先へ移動するためには[paiza]へのログインが必要です。

12-03-03-01
問題文

データ構造の queue と同様の働きをするロボットがあります。ロボットは指示に応じて配列 A に対して 2 種類の仕事を行います、仕事の内容は以下の通りです。

in n と指示された場合、A の末尾に n を追加してください。
out と指示された場合、A の先頭の要素を削除してください。ただし、A が既に空の場合、何も行わないでください。

ロボットに与えられる指示の回数 N と、各指示の内容 S_i が与えられるので、ロボットが全ての処理を順に行った後の A の各要素を出力してください。
なお、初め配列 A は空であるものとします。

入力値(例)
10
out
in 33
out
out
out
out
in -76
out
out
in -53

出力値(例)
-53

解答例

12-03-03-02

解説

1)$nで1行目を取得します。

2)空の配列$arrayを用意します。

3)for()で$n回の$inputを取得します。

4)$inputを取得しつつ、if()で($input == "out")だったら、配列の先頭の要素を削除する関数array_shift()で配列の要素を削除します。

5)($input == "out")以外は、explode()で$inputを分割($head, $tail)して取得します。

6)配列$arrayに$tailだけ追加します。

7)foreach()で配列の値を一つずつ取得し、出力します。

感想

問題の意味がなかなか理解できなくて、解き方が合っているのか自信がありません。もう少し力がついたらもっとキレイなコードが書けるでしょうか?(*'ω'*)

おすすめの記事
スポンサーリンク