x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요.
※ 각 원 위의 점도 포함하여 셉니다.
그림과 같이 정수 쌍으로 이루어진 점은 총 20개 입니다.
1 ≤ r1
< r2
≤ 1,000,000
이를 코드로 옮겨보면 다음과 같다.
Javascript 코드
function solution(r1, r2) {
var answer = 0;
for(let x=1; x <= r2; x++) {
let maxY = Math.floor(Math.sqrt(r2*r2 - x*x));
let minY = x >= r1 ? 0 : Math.ceil(Math.sqrt(r1*r1 - x*x));
answer += maxY - minY + 1;
}
return answer * 4;
}
Python 코드
import math
def solution(r1, r2):
answer = 0
for x in range(r2+1):
maxY = int(math.sqrt(r2**2 - x**2))
minY = 0 if x >= r1 else math.ceil(math.sqrt(r1**2 - x**2))
answer += (maxY - minY + 1)
return answer * 4 - (r2 - r1 + 1) * 4