Leetcode Java Check If Array Pairs Are Divisible by k

업데이트:

문제

Link

코드

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;
  }

}

결과

Link

설명

  1. arr의 값 중 두 숫자씩 쌍을 이룬 값들의 합이 k로 나눌 수 있는 검증하는 문제이다.

  2. counts는 arr의 값을 k로 나누기 위한 값을 저장할 변수로, k 크기의 정수 배열로 초기화한 후 arr의 모든 값을 순차적으로 k로 나눈 나머지 값에 k를 더한 후 다시 k로 나눈 나머지 값에 해당하는 값을 증가시켜준다.

  3. counts[0]의 값을 2로 나눈 결과가 0이 아닌 k 배수가 홀수인 경우, 각 값들의 합이 k로 나눌 수 없으므로 false를 주어진 문제의 결과로 반환한다.

  4. 1부터 $\frac{k}{2}$ 이하까지 i를 증가시키며 counts[i]의 값이 counts[$k -i$]의 값과 다른 두 값을 합친 경우, k의 배수가 되지 않는 경우 false를 주어진 문제의 결과로 반환하다.

  5. 모든 검증이 끝나면 조건을 만족하므로 true를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기