leetcode - Queries on Number of Points Inside a Circle

문제 설명

points[i] = [xi, yi]가 2D 평면에서 째 점의 좌표인 점 배열이 주어집니다. 여러 점이 동일한 좌표를 가질 수 있습니다.

또한 쿼리 배열 쿼리가 주어지며, 쿼리[j] = [xj, yj, rj]는 반지름이 rj인 (xj, yj)에 중심을 둔 원을 설명합니다.

각 쿼리 queries[j]에 대해 j번째 원 안에 있는 점의 수를 계산합니다. 원의 경계에 있는 점은 내부로 간주됩니다.

배열 응답을 반환하며, 여기서 answer[j]는 j번째 쿼리에 대한 응답입니다.

예시:

링크 참조 : https://leetcode.com/problems/queries-on-number-of-points-inside-a-circle/description/

문제 접근

원의 중심과 해당 포인트의 거리가 원의 반지름보다 같거나 작으면 해당 점은 원의 포함이된다는 의미이다.

  1. 원의 갯수 그리고 포인트 갯수만큼 반복문을 순회한다.
  2. 원의 중심과 포인트의 거리를 구한다.
  3. 이전에서 구한 거리가 반지름보다 작거나 같으면 count 를 증가시킨다.
  4. 반복할때마더 이전과정을 반복하여 결과를 구한다.
function(points, queries) {
  const result = [];

  for (let i = 0; i < queries.length; i++) {
    const [x, y, r] = queries[i];
    let count = 0;

    for (let j = 0; j < points.length; j++) {
      const [xPoint, yPoint] = points[j];
      const tempX = Math.abs(x - xPoint);
      const tempY = Math.abs(y - yPoint);

      if (tempX * tempX + tempY * tempY <= r * r) {
        count++;
      }
    }

    result.push(count);
  }

  return result;
}