[programmers/py] 두 원 사이의 정수 쌍

승민·2023년 10월 24일

알고리즘

목록 보기
38/171

두 원 사이의 정수 쌍

https://school.programmers.co.kr/learn/courses/30/lessons/181187#

문제 설명

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

문제 플이

  1. 피타고라스 정리를 통해 r**2 = x**2 + y**2을 통해 y값을 구한다.
  2. 하나의 사분면에서 점의 수를 구하고 4를 곱해서 답을 구한다.
import math

def solution(r1, r2):
    answer = 0
    
    # r1<r2
    for i in range(1, r2+1):
        r2_h = math.floor(math.sqrt(r2**2 - i**2))
        r1_h = 0
        
        if r1>i :
            r1_h = math.ceil(math.sqrt(r1**2 - i**2))
        
        answer += (r2_h-r1_h) + 1
    
    return answer*4

0개의 댓글