Skip to main content

2918 - Minimum Equal Sum of Two Arrays After Replacing Zeros

info

풀이 키워드

스포주의

그리디


풀이 코드

info
  • 메모리: 60500 KB
  • 시간: 3 ms
class Solution {
public long minSum(int[] nums1, int[] nums2) {
long sum1 = 0;
long sum2 = 0;
long zCnt1 = 0;
long zCnt2 = 0;

for (long n : nums1) if (n == 0) ++zCnt1; else sum1 += n;
for (long n : nums2) if (n == 0) ++zCnt2; else sum2 += n;

long cand = Math.max(sum1+zCnt1, sum2+zCnt2);
if (sum1 != cand && zCnt1 == 0) return -1;
if (sum2 != cand && zCnt2 == 0) return -1;

return cand;
}
}

풀이 해설

일정 수준의 발상이 필요한, corner case 처리형 문제이다.

대신 구현은 매우 쉽고 -1이 될만한 조건만 필터링해주면 된다.

이는 현재 배열의 합이 다른 값으로 조정되어야 하는데, 0이 없어 조정할 수 없는 경우를 들 수 있다.

만일 해당 경우가 아니라면 최소 조정값을 반환한다.


메모

  • 난이도 쓰인 것에 비해 로직이 너무 단순하게 나올 것 같아서 뭐지?뭐지?? 하다가 풀고나서 유형을 까보니 이젠 웃음만 나옴;