【戦セット】> 【競技8】お一人様一点限り (paizaランク C 相当) [難易度: 1471 ±10]
※リンク先へ移動するためには[paiza]へのログインが必要です。
あるスーパーでは、お一人様一点限りでセール価格の商品を販売することにしました。
そこで、一人のお客さんが2回以上その商品を買えないように、お客さんの名前をチェックすることにしました。
お客さんの名前が来た順番で入力されるので、そのお客さんが初めて来たのかどうかを判定し、結果を出力してください。
入力値(例)
3
James
Mary
John
出力値(例)
YES
YES
YES
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $n = trim(fgets(STDIN)); $guest = []; for($i = 0; $i < $n; $i++) { $tmp = trim(fgets(STDIN)); if(in_array($tmp, $guest)) { echo "NO". "\n"; } else { echo "YES". "\n"; $guest[] = $tmp; } } ?> |
解説
1)1行目の数値を受け取ります。($n)
2)空の配列を用意します。($guest=[])
3)for()で$n回分の行数を受け取ります。受け取るときに、in_array()で$guestの配列に値が含まれているかを判定します。in_arrayは、第1引数が探したい値で、第2引数が配列となります。
(in_array($tmp, $guest))
4)配列に含まれていれば、"NO"を出力し、含まれていなければ、"YES"を出力します。また、含まれていない場合は、配列の$guestに値を追加します。($guest[] = $tmp)