たいちっち

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

【Java】入力された値の足し合わせ(B - Bitter Alchemy)

解いた問題

AtCoderの「B - Bitter Alchemy」

提出した回答
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int X = sc.nextInt();
        int minimum_m = 0;
        int sum = 0; //ドーナツ1個ずつ作成時の重さの合計
        for (int i = 0; i < N; i++) {
            int tmp = sc.nextInt();
            sum += tmp;
            if (i == 0) {
                minimum_m = tmp;
                continue;
            }
            //最小を入れ替え
            if (tmp < minimum_m) {
                minimum_m = tmp;
            }
        }
        //この時点でドーナツを1個ずつ、合計N個を、作成している
        //必要な素が最小のドーナツを可能な限り作る
        //
        System.out.println(N + (X - sum) / minimum_m);
        sc.close();
    }
}

最小の値を求める方法として、配列にしてCollectionsやstreamの使用を考えたが、for文の中でシンプルに実装できそうだったので使用しなかった。

全ドーナツを1個ずつ作成し、残ったお菓子の素で最も少ない量の素で作成できるドーナツだけを作成する。
競プロの問題文に少し慣れた気がして嬉しかった。

TODO
  • 他のA,B問題を解く
  • タイミング合う回のコンテストに参加する

 

おわり。。