たいちっち

競技プログラミングをしています

【Java】ArrayListを数値が大きい順に並べ替え、足し合わせる

解いた問題

AtCoderの「B - Kagami Mochi」

atcoder.jp

提出した回答
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);
    }
}

 

こちらの問題と同じ方法で回答できた。

taichicchi.hatenablog.com

 

2つ目のfor文の中のif文で「i == 0」の場合を分けたが、分けないほうが良いのだろうか?

処理の読みやすさは上記の書き方が良い気がしている。

 

TODO

 

おわり。。