【配列に対しての複雑な処理】STEP: 5 場所取り (paizaランク C 相当) – PHP編【配列活用メニュー】
【配列活用メニュー】 > 【配列に対しての複雑な処理】STEP: 5 場所取り (paizaランク C 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
解答例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php $input = explode(" ",trim(fgets(STDIN))); $n = $input[0]; $k = $input[1]; $f = $input[2]; $array = array(); for($i = 0;$i < $k;$i++){ array_push($array,trim(fgets(STDIN))); } for($i = 0;$i < $f;$i++){ unset($array[$i]); } $test = array_unique($array); foreach($test as $value){ echo $value."\n"; } ?> |
1.ブルーシートの配列をつくる
|
1 2 3 4 5 6 7 8 |
$input = explode(" ",trim(fgets(STDIN))); $n = $input[0]; $k = $input[1]; $f = $input[2]; $array = array(); for($i = 0;$i < $k;$i++){ array_push($array,trim(fgets(STDIN))); } |
2.先頭からf枚のシートを取り除く
|
1 2 3 |
for($i = 0;$i < $f;$i++){ unset($array[$i]); } |
3.配列の重複分を削除する
ブルーシートを先頭から取り除いた後、次のルールで客は店に並ぶとあります。
・自分のブルーシートが 1 枚以上残っているとき、自分のブルーシートのうち、最も先頭に近いブルーシートの位置に並ぶ。
・自分のブルーシートが 1 枚も残っていないとき、並ぶことなく帰宅する。全員が並び終わった後に待機列にいる人の番号を先頭から順に答えてください。
・自分のブルーシートが 1 枚も残っていないとき、並ぶことなく帰宅する。全員が並び終わった後に待機列にいる人の番号を先頭から順に答えてください。
少々面倒に書かれていますが、この文面が意味するところは「配列の重複分を削除し、出力しなさい」と置き換えることができます。「array_unique()」を使って答えを導きます。
|
1 2 3 4 5 |
$test = array_unique($array); foreach($test as $value){ echo $value."\n"; } |
