【Java】ArrayListを数値が大きい順に並べ替え、足し合わせる
解いた問題
AtCoderの「B - Kagami Mochi」
提出した回答
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); List<Integer> list = new ArrayList<>(); for (int i = 0; i < n; i++) { list.add(sc.nextInt()); } sc.close(); Collections.sort(list);// 小さい順のリスト Collections.reverse(list); // 大きい順のリスト int counter = 0; for (int i = 0; i < list.size(); i++) { if (i == 0) { counter += 1; continue; } if (list.get(i-1) > list.get(i) ) { counter += 1; } } System.out.println(counter); } }
こちらの問題と同じ方法で回答できた。
2つ目のfor文の中のif文で「i == 0」の場合を分けたが、分けないほうが良いのだろうか?
処理の読みやすさは上記の書き方が良い気がしている。
TODO
- ソートのアルゴリズムを正しく理解する
おわり。。