Leetcode Java Minimum Number of Operations to Make Array Empty
업데이트:
문제
코드
class Solution {
  public int minOperations(int[] nums) {
    Map<Integer, Integer> map = new HashMap<>();
    for (int num : nums) {
      map.put(num, map.getOrDefault(num, 0) + 1);
    }
    int result = 0;
    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
      int value = entry.getValue();
      if (value == 1) {
        return -1;
      }
      result += value / 3;
      if (value % 3 != 0) {
        result++;
      }
    }
    return result;
  }
}
결과
설명
- nums내 동일한 값을 둘, 셋 단위로 제거할 때 모두 제거하기까지 걸리는 최소한의 작업 수를 반환하는 문제이다.
    
- 단, 삭제가 불가능한 경우 -1을 주어진 문제의 결과로 반환한다.
 
 - 문제 풀이에 필요한 변수를 정의한다.
    
- map은 숫자별 갯수를 계산하기 위한 변수로, HashMap으로 정의하고 nums 내 숫자 별 갯수를 모두 넣어준다.
 - result는 횟수를 계산하기 위한 변수로, 0으로 초기화한다.
 
 - map의 각 값을 entry에 넣고 아래를 반복한다.
    
- value에 entry의 값을 넣어주고, 1인 경우 잔여 값이 되므로 -1을 주어진 문제의 결과로 반환한다.
 - result에 value가 3배수이면 3으로 나눈 값을, 아니면 3으로 나눈 값에 1을 증가한 값을 더해준다.
 
 - 반복이 완료되면 result를 주어진 문제의 결과로 반환한다.
 
소스
Sample Code는 여기에서 확인 가능합니다.
  
  
댓글남기기