chyam

[프로그래머스 Lv2, python] - 두 원 사이의 정수 쌍 본문

프로그래머스/LV2

[프로그래머스 Lv2, python] - 두 원 사이의 정수 쌍

chyam_eun 2025. 4. 28. 17:20

https://school.programmers.co.kr/learn/courses/30/lessons/181187?language=python3

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

import math

def solution(r1, r2):
    answer = 0
    for x in range(0, r2 + 1):
        max_y = int((r2**2 - x**2) ** 0.5) # 가능한 최대 y 개수
        min_y = 0 # 최소 y
        if x < r1: # x좌표가 r1보다 작으면 포함 x
            min_y = math.ceil((r1**2 - x**2) ** 0.5) # 최소를 r1기준으로 가능한 최대 y개수를 구하기
        answer += max(0, max_y - min_y + 1) # r2에서 가능한 최대 y개수에서 r1값을 빼준다 
    return (answer - (r2 - r1 + 1)) * 4 # 중복되는거 빼주고 계산

 

 

# 처음에 2중 for문 써서 작성한 코드 (시간초과)

def solution(r1, r2):
    answer = 0
    li = []
    for a in range(-r2,r2+1):
        for b in range(-r2,r2+1):
            if r1 <= (a**2 + b**2)**0.5 <= r2:
                li.append([a,b])
    return len(li)