[Coding Test]두 원 사이의 정수 쌍

Author

SEOYEON CHOI

Published

January 21, 2025

- 링크

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

import math
r1, r2 = 2, 3
def sq(a,b):
    return math.sqrt(a**2 - b**2)

answer = 0
    
for i in range(1,r2+1):
    if i < r1 :
        score = math.ceil(sq(r1,i))
    else:
        score = 0
    enter = int(sq(r2,i))
    answer = answer + enter - score + 1
answer * 4
20

-

import math

def solution(r1, r2):
    def sq(a,b):
        return math.sqrt(a**2 - b**2)

    answer = 0

    for i in range(1,r2+1):
        if i < r1 :
            score = math.ceil(sq(r1,i))
        else:
            score = 0
        enter = int(sq(r2,i))
        answer = answer + enter - score + 1
    return answer * 4
solution(2, 3)
# 20
20

- 한줄씩

def sq(a,b):
    return math.sqrt(a**2 - b**2)
2**2 - 1**2
3
math.sqrt(2**2 - 1**2)
1.7320508075688772
sq(2,1)
1.7320508075688772
answer = 0
for i in range(1,r2+1):
    if i < r1 :
        score = math.ceil(sq(r1,i))
        print(f'i = {i} 일때 {score} = r1 안의 정수쌍 제거')
    else:
        score = 0
    enter = int(sq(r2,i))
    answer = answer + enter - score + 1
    print(answer)
i = 1 일때 2 = r1 안의 정수쌍 제거
1
4
5