[코테 풀이] Make Array Zero by Subtracting Equal Amounts

시내·2024년 7월 15일
0

Q_2357) Make Array Zero by Subtracting Equal Amounts

출처 : https://leetcode.com/problems/make-array-zero-by-subtracting-equal-amounts/

You are given a non-negative integer array nums. In one operation, you must:

  • Choose a positive integer x such that x is less than or equal to the smallest non-zero element in nums.

  • Subtract x from every positive element in nums.

Return the minimum number of operations to make every element in nums equal to 0.

class Solution {
    public int minimumOperations(int[] nums) {
        int answer = 0;
        List<Integer> list = new ArrayList<>();
        for (int n : nums) list.add(n);
        while (true) {
            int min = findMin(list);
            answer++;
            if (min == -1) {
                answer--;
                break;
            }
            int zeros = 0;
            List<Integer> updated = new ArrayList<>();
            for (int a = 0; a < list.size(); a++) {
                if (list.get(a) != 0) updated.add(list.get(a) - min);
                else {
                    updated.add(0);
                    zeros++;
                }
            }
            if (zeros == nums.length) break;
            list = new ArrayList<>(updated);
        }
        return answer;
    }

    public int findMin(List<Integer> l) {
        List<Integer> list = new ArrayList<>();
        for (int n : l) {
            if (n != 0) list.add(n);
        }
        Collections.sort(list);
        if (list.isEmpty()) return -1;
        else return list.get(0);
    }
}
profile
contact 📨 ksw08215@gmail.com

0개의 댓글