記事ディレクトリ
綱引き
トピックの説明
会社は最近綱引きの準備をしており、全従業員の中から選ぶ必要がある。
選択ルールは次のとおりです。
- 身長と体重を二番目に優先する方法で試合のラインナップを準備します。
- 参加チームは10人の選手を派遣する必要がある。
説明を入力してください
入力は、選考に登録する部門の候補者の情報を示す N 行の従業員情報です。各行には、従業員の身長と体重の情報を示す 2 つの数字がスペースで区切られています。たとえば、181 70 182 70 は社員候補者 2 名で、 1人目
の身長は181 cm、70 kg、2 人目は身長 182 cm、体重 70 kg を示します。
注意
入力データ範囲:
- メンバーの身長と体重は int データ型です。
- 候補メンバーの数を N、10 ≤ N ≤ 100 として入力します
出力の説明
カンマで区切られた次の大きな数値リスト (例: 2,3,6,-1,6)
例
入力 | 181 70 182 70 183 70 184 70 185 70 186 70 180 71 180 72 180 73 180 74 180 75 |
出力 | 186 70 185 70 184 70 183 70 182 70 181 70 180 75 180 74 180 73 180 72 |
説明する | なし |
分析する
- この質問は非常に難しそうに見えますが、データ構造が定義されている限り、実際には非常に簡単です。
- 実際には、List コレクションにエンティティ クラスが読み込まれ、このエンティティ クラスにはプレーヤーの基本情報が記録されます。
- コレクションを並べ替えるだけ
サンプルコード
import java.util.ArrayList;
import java.util.Scanner;
//180 70
//198 60
//175 80
//175 70
//175 60
//198 90
//199 100
//170 55
//170 60
//170 65
//177 88
//185 80
//拔河比赛
public class T69 {
static class Person {
int w;
int h;
public Person(int w, int h) {
this.w = w;
this.h = h;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Person> persons = new ArrayList<>();
while (sc.hasNextLine()) {
String line = sc.nextLine();
if (line.equals(""))
break;
Person person = new Person(Integer.parseInt(line.split(" ")[1]), Integer.parseInt(line.split(" ")[0]));
persons.add(person);
}
persons.sort((p1, p2) -> p1.h != p2.h ? p2.h - p1.h : p2.w - p1.w);
for (int i = 0; i < 10; i++) {
System.out.println(persons.get(i).h + " " + persons.get(i).w);
}
}
}
コードの実行例