配列活用メニュー】> 【配列に対しての複雑な処理】STEP: 4 二人三脚 (paizaランク C 相当) [難易度: 1549 ±17]

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

12-03-04-01
問題文

生徒の身長が A_1, ...., A_N であるような N 人のクラスで二人三脚の代表を決めることにしました。代表には、身長の差が最も小さいような 2 人を選出することにしました。選ばれた 2 人の身長を昇順に出力してください。

入力値(例)
5
119
102
187
191
132

出力値(例)
187
191

解答例

12-03-04-02

解説

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

2)空の配列$aと$ansを用意します。$diffには0($diff = 0;)を設定します。

3)2行目以降をfor()で$n回分、$a[$i]に取得していきます。

4)$diffに($a[0] - $a[1])を絶対値(abs)で入れておきます。
 入力値1の場合は、119($a[0])と102($a[1])なので差分17が入ります。

5)$iループの中に$jループを作り、if()で($a[$i] - $a[$j])の差分が$diffより小さければ、$diffを書き換えます。そのときに、配列$ansに$a[$i]と$a[$j]を入れます。

6)$ansをsort()で小さい順に並べます。foreach()で取り出して出力します。

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