SRM150 DIV2 250


問題文概略

一日に与えられる仕事とこなせる仕事の量が決まっている。
仕事を終えられる日数を求めよ。

書いたコード

解けなかった。

他の参加者のコードを読んで修正した

public class WidgetRepairs {

    public int days(int[] arrivals, int numPerDay) {

        int n = arrivals.length;
        int w = 0, ans = 0;
        for (int i = 0; i < n; i++){
            w += arrivals[i];
            if(w > 0) {
                ans++;
                w -= Math.min(w, numPerDay);
            }
        }
        if(w > 0) {
            ans += (int) Math.ceil( ((double) w/ numPerDay));
        }
        return ans;
    }
}


雑感

仕事の量も配列にいれて管理しようとコードを書いていたら混乱して解けなかった。
単純に一つ変数を用意して、管理すればよかったのか。

仕事量を計算する時の以下の考えかたは覚えておこう。

w -= Math.min(w, numPerDay);