※この問題はpaizaの問題ですが、paizaラーニングの問題集のため、質問は自由とされています
(URL: https://paiza.jp/works/mondai)
なお、このコーナー内の問題については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。 授業や研修にもご利用いただけますので、ぜひ教材などにもお使いください。
ぜひご回答お願いいたします。
前提・実現したいこと
問題: 正整数 n が与えられ、数のペアが n 個与えられます。各ペアの最初の数はりんごの個数(a)を、その次の数はバナナ(b)の個数を表しています。これらの数のペアを以下の規則に従って、偉い順に並び替えてください。 1. ふたつのペアのりんごの数が異なる場合、りんごの数が多い方が偉い(この際、バナナの数は関係ない)。 2. りんごの数が同じである場合、バナナの数が多い方が偉い。 入力: n a_1 b_1 ... a_n b_n (a:りんごの数、b:バナナの数) 期待する出力: ペアを偉い順に並べ替え、改行区切りで n 行、順に出力してください。出力の各行は入力と同じく、 "a_i b_i" のように、りんごの個数とバナナの数が、この順に、半角スペースで区切られているものとします。 末尾に改行を入れ、余計な文字、空行を含んではいけません。
発生している問題・エラーメッセージ
たくさん調べてみたのですが、この辞書式ソートが全くわかりません
解答例、もしくはヒントを教えていただきたいです、、
該当のソースコード
Java
1import java.util.*; 2 3 4public class Main { 5 public static void main(String[] args) { 6 Scanner sc = new Scanner(System.in); 7 // n個のりんごとバナナの数のペア 8 int n = Integer.parseInt(sc.nextLine()); 9 ArrayList<String> ab = new ArrayList<String>(); 10 for (int i = 0; i < n; i++) { 11 ab.add(sc.nextLine()); 12 } 13 // 並べ替え 14 Collections.sort(ab); 15 Collections.reverse(ab); 16 for (int i = 0; i < n; i++) { 17 System.out.println(ab.get(i)); 18 } 19 } 20}
試したこと
二次元配列や二次元リストにしてみたり、辞書式ソートの基本も知らないので、学んでみたりもしたのですが、結局何も進歩しませんでした。
回答2件
あなたの回答
tips
プレビュー