問題説明
マラソン選手たちがマラソンに参加しました。たった一人の選手を除いて、すべての選手がマラソンを完走しました。 マラソンに参加した選手たちの名前が入っている配列participantと完走した選手たちの名前が入っている配列completionがパラメータとして与えられた場合に完走できなかった選手の名前をreturnするようにsolutionメソッドを作成してください。
条件
- マラソンに参加した選手の数は1以上100、000以下です。
- completionのlengthはparticipantのlengthより1小さいです。
- completion.length = participant.length – 1
- 参加者の名前は1以上20個以下のアルファベットで構成されています。
- 参加者の中では同じ名前を持っている参加者があるかもしれないです。
入出力例
| participant | completion | return |
|---|---|---|
| [leo, kiki, eden] | [eden, kiki] | leo |
| [marina, josipa, nikola, vinko, filipa] | [josipa,filipa,marina,nikola] | vinko |
| [mislav, stanko, mislav, ana] | [stanko, ana, mislav] | mislav |
解説

- 6、7行:2つの配列をソートを行います。
- int i = 0:ループの中で宣言してしまうと16行目で「i」ではなくparticipant.lengtが入るので、コードをきれいにするために宣言しました。
- 10行:participantではなく、completionを利用していることはparticipantを利用する場合、最後のインデックス(i)でExceptionになってしまいます。
- 11、12行:participant[i]とcompletion[i]が違う場合、ゴールできなかった選手なのでその選手の名前をreturnします。(sortを行ったので、違う場合はゴールできなかった選手となる。)
終わりに
今回、僕はArrays.srotを利用してこのアルゴリズムを解きましたが、他の人がHashMapを利用した解説もあるので、共有します。

