https://school.programmers.co.kr/learn/courses/30/lessons/181187
x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요.
※ 각 원 위의 점도 포함하여 셉니다.
제한 사항
- 1 ≤ r1 < r2 ≤ 1,000,000
나의 풀이
- 원의 4분의1 안의 점 갯수를 구한 뒤 \* 4를 리턴한다
- x = 0인 부분은 겹치므로 x = 1부터 x <= r2때까지 순회한다
- 순회하면서 원 그래프 식을 사용하여 각 x마다 가능한 최대, 최소y를 구해 가능한 y의 갯수를 구한다.
- 앞서 구한 갯수 \*4 리턴한다.
x제곱 + y제곱 = 반지름 제곱 식을 사용할 수 있다
function solution(r1, r2) {
var answer = 0;
const r1Pow = r1*r1;
const r2Pow = r2*r2;
for (let x = 1; x <= r2; x++) {
const currPow = x*x;
const maxY = Math.floor(Math.sqrt(r2Pow - currPow));
const minY = x <= r1 ? Math.ceil(Math.sqrt(r1Pow - currPow)) : 0;
answer += maxY - minY + 1;
}
return answer*4;
}
'알고리즘' 카테고리의 다른 글
[프로그래머스lv2] 택배 배달과 수거하기 JS (0) | 2024.01.10 |
---|---|
[프로그래머스lv2] 당구연습JS (0) | 2024.01.02 |
[프로그래머스 lv2] 요격 시스템 JS [그리디] (0) | 2023.12.27 |
[프로그래머스lv2] 아날로그 시계 JS [구현] (0) | 2023.12.26 |
[PCCP 기출문제] 2번 / 석유 시추 JS (0) | 2023.12.25 |