Leetcode Java Check If Array Pairs Are Divisible by k
업데이트:
문제
코드
class Solution {
public boolean canArrange(int[] arr, int k) {
int[] counts = new int[k];
for (int num : arr) {
counts[((num % k) + k) % k]++;
}
if (counts[0] % 2 != 0) {
return false;
}
for (int i = 1; i <= k / 2; i++) {
if (counts[i] != counts[k - i]) {
return false;
}
}
return true;
}
}
결과
설명
-
arr의 값 중 두 숫자씩 쌍을 이룬 값들의 합이 k로 나눌 수 있는 검증하는 문제이다.
-
counts는 arr의 값을 k로 나누기 위한 값을 저장할 변수로, k 크기의 정수 배열로 초기화한 후 arr의 모든 값을 순차적으로 k로 나눈 나머지 값에 k를 더한 후 다시 k로 나눈 나머지 값에 해당하는 값을 증가시켜준다.
-
counts[0]의 값을 2로 나눈 결과가 0이 아닌 k 배수가 홀수인 경우, 각 값들의 합이 k로 나눌 수 없으므로 false를 주어진 문제의 결과로 반환한다.
-
1부터 $\frac{k}{2}$ 이하까지 i를 증가시키며 counts[i]의 값이 counts[$k -i$]의 값과 다른 두 값을 합친 경우, k의 배수가 되지 않는 경우 false를 주어진 문제의 결과로 반환하다.
-
모든 검증이 끝나면 조건을 만족하므로 true를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기