【配列に対しての複雑な処理】FINAL問題 【配列に対しての複雑な処理】集団行動 (paizaランク C 相当) – PHP編【配列活用メニュー】


【配列活用メニュー】 > 【配列に対しての複雑な処理】FINAL問題 【配列に対しての複雑な処理】集団行動 (paizaランク C 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。

解答例

まず始め1~Nの配列を作り、その配列を操作します。この問題では3つの動作を繰り返し、最終結果を出力する問題になります。各動作は次の通りです。

3つの動作・swap A B
先頭から A 番目の人と、先頭から B 番目の人の位置を入れ替える。
・reverse
列の前後を入れ替える。
・resize C
先頭から C 人を列に残し、それ以外の人を全員列から離れさせる。ただし、列が既に C 人以下の場合、何も行わない。

動作の中に「A番目とB番目の人を入れ替える」というものがあります。このことから一度、配列のコピーを取りながら要素を入れ替えます。コピー配列からAとBの要素を取り出し、オリジナル配列に入れ込む。そしてオリジナルの配列をコピーに上書き、この動作の処理を繰り返しながら答えを導いていきます。

・各データの取得、1~Nまでの配列作成、コピー配列の作成

 

・各動作の処理(「swap A B」、「reverse」、「resize C」)

「if」文で各動作の分岐を作ります。各動作の細かな処理はコードから確認して頂ければ(;^ω^)

エッグ

シェアする