データセット選択メニュー】> 【集合の結合】STEP: 3 重複の判定 1 (paizaランク C 相当) [難易度: 1495 ±17]

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

問題文

N 個の要素からなる数列 A が与えられます。2 ≦ i ≦ N の各 i に対して、A_i と同じ値が A_1 から A_{i-1} の間にあるかどうかを判定してください。

入力値(例)
9
1 2 3 2 5 3 3 10 2

出力値(例)
No
No
Yes
No
Yes
Yes
No
Yes

解答例

解説

問題を読み解くのに少し苦労しました。

入力値(例)の例でみると、

9
1 2 3 2 5 3 3 10 2

まず、「1」と「2」が重複しているかを調べます。→ No

次に、「1」と「2」と「3」→ No

次は、「1」「2」「3」「2」で 最後の2は重複しているので → Yes

次は、「1」「2」「3」「2」「5」で 最後の5は重複していないので → No

次の「1」「2」「3」「2」「5」「3」で 最後の3が重複しているので → Yes...

と最後の数値が重複しているかを調べていきます。

for()文でループしながら、

配列をスライスで切り取りつつ、最後の数値を$tailに入れて in_array()で特定の値が含まれているか調べます。

in_array()は第1引数が探したい値、第2引数が配列で、TRUEかFALSEを返します。

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