원의 방정식을 이용하여 푸는 문제
(x**2 + y**2 = r**2 -> y(양수) = root(r**2 - x**2))
def solution(r1, r2):
answer = 0
# 1사분면만 확인하기
for i in range(1, r2):
num2 = int((r2**2 - i**2)**(1/2)) # 반지름이 r2인 원에서 x좌표가 i인 가장 높은 y좌표 구하기 <- 원의 방정식
if i >= r1:
# i가 r1보다 크면 -> 0 ~ num2까지 모든 점이 두 원 사이에 존재
answer += 4*(num2+1)
else:
# i가 r1보다 작으면 -> num1 ~ num2까지만 두 원 사이에 존재
num1 = int((r1**2 - i**2)**(1/2)) # 반지름이 r1인 원에서 x좌표가 i인 가장 높은 y좌표 구하기 <- 원의 방정식
if num1**2 + i**2 == r1**2:
# 내부 원 경계에 찍힌 점을 포함하는 경우
answer += 4*(num2 - num1 + 1)
else:
# 내부 원 경계에 찍힌 점을 포함하지 않는 경우
answer += 4*(num2 - num1)
return answer + 4 # 외부 원 경계의 점 4개 더하기 -> (0,r2), (0,-r2), (r2,0), (-r2,0)