코린이의 소소한 공부노트

[LeetCode/Easy] 2357. Make Array Zero by Subtracting Equal Amounts 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2357. Make Array Zero by Subtracting Equal Amounts

무지맘 2023. 5. 2. 14:13

1. Input

1) int[] nums

 

2. Output

1) 다음과 같은 작업을 반복할 때, 모든 요소들을 0으로 만드는 최소 횟수를 반환

- nums에서 가장 작은 양의 정수 x를 고른다.

- nums에 있는 모든 양수에서 x를 뺀다.

 

3. Constraint

1) 1 <= nums.length <= 100

2) 0 <= nums[i] <= 100

 

4. Example

Input: nums = [1,5,0,3,5] -> Output: 3

설명:

- x = 1 -> nums = [0,4,0,2,4]

- x = 2 -> nums = [0,2,0,0,2]

- x = 2 -> nums = [0,0,0,0,0]

 

5. Code

1) 첫 코드(2023/05/02)

class Solution {
    public int minimumOperations(int[] nums) {
        int answer = 0;
        Arrays.sort(nums);
        for(int i=0 ; i<nums.length ; i++){
            if(nums[i]!=0){
                int x = nums[i];
                for(int j=i ; j<nums.length ; j++)
                    nums[j] -= x;
                answer++;
            }
        }
        return answer;
    }
}

2) 힌트를 보고 다시 해본 코드(2023/05/02)

class Solution {
    public int minimumOperations(int[] nums) {
        HashSet<Integer> set = new HashSet<>();
        for(int i : nums)
            if(!set.contains(i) && i!=0)
                set.add(i);
        return set.size();
    }
}

- 2번코드가 압도적으로 좋다.

- 결국 문제에서 말하는 최소 횟수는 0을 제외한 중복되지 않은 수의 개수였다.