프로그래머스 - 두 원 사이의 정수 쌍

dobyming·2023년 4월 18일
0
post-custom-banner

문제 설명

x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요.※ 각 원 위의 점도 포함하여 셉니다.


제한 사항

  • 1 ≤ r1 < r2 ≤ 1,000,000

입출력 예

r1r2result
2320

입출력 예 설명

https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/ce4fa289-79cf-423b-8f9c-57de0c3b642e/%EC%9E%85%EC%B6%9C%EB%A0%A5%20%EC%98%88%20%EC%84%A4%EB%AA%85.png

그림과 같이 정수 쌍으로 이루어진 점은 총 20개 입니다.


내 코드

def solution(r1, r2):
    answer = 0
    minY, maxY = r1,r2 #최소, 최대로 가질 수 있는 y좌표
    # 1사분면에 대해서만 좌표값을 구하고 대칭이므로 *4한다.
    for x in range(0,r2):
        while r2**2 < maxY**2 + x**2:
            maxY -= 1
        # minY 양수값을 유지 
        while minY-1 and r1**2 <= (minY-1)**2 + x**2:
            minY -= 1
        answer += (maxY-minY) + 1
    
    return answer*4
post-custom-banner

0개의 댓글