LV 2: 두 원 사이의 정수 쌍

ewillwin·2023년 8월 11일
0

문제 링크

LV 2: 두 원 사이의 정수 쌍


구현 방식

  • 한 사분면만을 구하고, *4를 통해 최종 값을 구해야한다
    -> 이 때, 2중 for문을 통해 계산하게 되면 r2, r1이 1000000 이하이기 때문에 TLE를 받는다

  • x축을 기준으로 순회하는 방식으로 풀었다

  • 원의 방정식: y = sqrt(r^2 - x^2)

  • 1) 일단 0부터 r1-1까지 순회하며, r1과 r2가 겹친 부분을 계산해준다
    -> y2을 r2안에 있는 y좌표, y1를 r1안에 있는 y좌표라고 하면, y2 - y1이 r1과 r2가 겹친 부분의 좌표 개수가 된다

  • 2) r1부터 r2-1까지 순회하며, r2만 있는 부분을 계산해준다


코드

from math import sqrt

def solution(r1, r2):
    max_r = r2
    count = 0
    # x축 기준으로 순회
    for x in range(r1):
        count += int(sqrt(abs(r2**2 - x**2))) - int(sqrt(abs(r1**2 - x**2 - 1)))
    for x in range(r1, r2):
        count += int(sqrt(abs(r2**2 - x**2)))

    return count * 4
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글